그림을 "노이즈 제거"하는 프로그램을 작성하려고합니다. 난 국경이 아닌 픽셀만을 잡아서 값을 설정하기 위해 경계 픽셀을 사용하려고하지만 내 알고리즘이 의도 한 픽셀을 잡지 못하는 것처럼 보입니다. 결과적으로 이미지가 엉망이됩니다. 제가 정확하게 n = 길이를 이해한다면, m = 높이 (예 : 행). 저는 numpy를 사용하여 3d 표현을 할 수 있다는 것을 알고 있습니다. 그러나 그것은 제가하려고하는 것이 아닙니다. 누구든지 내가 뭘 잘못하고 있는지 알 수 있니? (분명하지만, 그것이 2D-표현을 위해 작성 (그리고 C의 것))Python을 사용한 Denoise 이미지 알고리즘
from PIL import Image
def DenoiseImage(inputIm, factor, iters):
data = list(inputIm.getdata())
n, m = inputIm.size
data2 = data
for y in range (0, iters):
#operate on pixels that aren't part of the top or bottom row
for x in range (n, ((m-1)*n)-1):
#makes sure x operated on isn't part of the left or right border
if (x-1)%n != 0 and x%n != 0:
#denoise pixel
data[x] = data2[x] +factor*(data2[x-1]+data2[x+1]-4*data[x]+data2[x-n]+data2[x+n])
temp = data2
data2 = data
data = temp
if iters%2==0:
return data2
else:
return data
이것은 내가 사용하려고 해요 알고리즘은 다음과 같습니다 : 여기에 코드입니다 http://pastebin.com/teEeUgFj
편집 : 얼마쯤 알고리즘 뒤에 생각의 그래픽 표현은, 내 모든 예술적인 재능을 가져 오는 것은 부담합니다 : 마음 m하십시오
는 아래로 길이 사진 m 너무 것 be = 4가 아닌 301.
정말 고맙습니다. 이제 나는 90 % 블랙 박스가 아닌 출력 그림을 얻습니다. 그래도 여전히 문제가 있습니다. 1 회 반복하면 출력 그림이 다소 다를 수 있지만 (예 : 10 회) 많은 반복을 수행하면 출력 그림은 단지 "눈보라"입니다 ". 나는 data2 = data와 temp use를 copy로 대체했다. 아이디어? 핵심 denoise 함수가 제대로 작동하지 않는 것처럼 보일 수 있지만, 내가 볼 수있는 한, 나는 링크를 게시 한 알고리즘에서 그것을 직접 복사했습니다. – user2875994
또한, convoke2d는 입력으로 2d 배열을 사용하는 반면, 가져온 목록은 1 차원 목록입니다. – user2875994
Ooop, 신경 쓰지 마세요, 저는 방금 너무 높은 요소 값 (1)을 가졌습니다. 0.1로 시도해 볼 때 작동하는 출력 그림이 있습니다. 그래서 유일한 관련 질문은 소집 된 질문입니다. – user2875994