2013-08-01 1 views
1

이전의 경우 이미지 품질이 떨어지기 때문에 기하 평균 필터를 사용하여 중간 필터 대신 노이즈를 제거했습니다. 아래에 표시된 코드는 노이즈를 제거하기위한 m 파일의 일부입니다.MATLAB의 이미지에서 노이즈 제거

fname = getappdata(0, 'fname'); 
[a, map] = imread(fname); 
x = ind2rgb(a, map); 
b = im2double(x); 
w=fspecial('gaussian',[3,3]); 
geom=exp(imfilter(log(b),ones(3,3),'replicate')).^(1/3/3); 
fname=imfilter(b,w,'replicate'); 
axes(handles.axes1); 
imshow(fname); 

내가 상관없이 이미지 품질/재산의 실행 코드 가져 오기 위의 '노이즈 제거'라는 이름 푸시 버튼을 누르면. 노이즈가없는 경우에도 이미지는 필터 처리됩니다.

내 질문에 노이즈가 있는지 여부를 감지 할 수있는 방법이 없으므로 이미지에 Noise가 없으면 누름 단추를 누를 때 'NO NOISE TO REMOVE'라는 메시지가 자동으로 표시됩니다.

답변

1

이미지가 시끄러운 지 여부를 직접 확인할 방법이 없습니다.

그러나 입력 이미지 b과 결과 이미지 fname을 비교하여 그 차이가 특정 임계 값보다 낮 으면 노이즈 제거 작업이 이미지를 효과적으로 변경하지 못했고 그다지 많지 않다고 판단 할 수 있습니다 원본 이미지의 노이즈는 다음과 같습니다.

threshold_ratio = 0.2; % to be decided experimentally 

difference_ratio = sum(sum((fname - b).^2))/sum(sum(b.^2)); 

if difference_ratio < threshold_ratio 

    disp('NO NOISE TO REMOVE'); 

end