통계적 신호 처리 - Wiener 필터링 및 역 필터링을 사용한 이미지 복원 - Matlab 시뮬레이션 - 첨부된 코드

  1. 위너 필터링을 사용한 노이즈 이미지 복원

  1. 주제 및 필터링된 이미지 복원 소개

  1. 주제

이미지 복원에 Wiener 필터링을 적용하고, 저하된 이미지가 가우스 가우스 화이트 노이즈에 의해 오염된 이미지라고 가정하고 역 필터링 방법과 Wiener 필터링 방법을 사용하여 이미지를 복원하고 그 효과를 비교하십시오. 문헌 참조, iterative Wiener를 사용해 보십시오. 효과를 더욱 향상시키기 위한 필터링 방법, 올바른 수정 항목 구성에 주의하십시오.

  1. 이미지 복원을 위한 역 필터링 소개

역필터링 방식은 노이즈가 추가된 영상에서 원본 영상으로 복원하는 기법으로 필터와 필터의 역필터를 이용하는 것이 기본 개념이다. 이 방법은 오염된 영상을 먼저 적절한 필터(위너 필터 등)로 필터링한 후 필터의 역필터를 이용해 필터링한 영상을 원본 영상으로 복원하는 방식이다. 필터의 역으로 ​​노이즈의 영향이 상쇄되기 때문에 원본 이미지를 효과적으로 복원할 수 있습니다.

  1. 이미지 복원을 위한 위너 필터링 소개

Wiener 필터링은 신호 모델을 기반으로 하는 반복 필터링 알고리즘으로, 신호가 잡음이 많은 선형 시스템 동적 응답과 추가 가우시안 잡음의 조합이라고 가정합니다. Wiener 필터링의 기본 아이디어는 먼저 신호와 잡음의 모델 매개변수를 추정한 다음 모델 매개변수에 따라 필터를 구성하고 마지막으로 필터를 사용하여 잡음을 제거하는 것입니다.

Wiener 필터링은 신호와 노이즈의 모델 파라미터에 따라 필터를 구성한 다음 필터를 통해 노이즈를 제거하여 노이즈 이미지를 복원할 수 있기 때문에 노이즈 이미지를 복원할 수 있습니다.

  1. 역 필터링과 Wiener 필터링의 원리

  1. 역 필터링의 원리

일반적으로 이미지의 열화 모델은 다음과 같이 표현할 수 있습니다.

그 중 g(x,y) 는 저하된 이미지, h(x,y) 는 포인트 확산 함수, f(x,y) 는 원본 이미지, n ( x , y ) 는 유입된 노이즈를 나타냅니다. 주파수 영역에서 다음과 같이 표현할 수 있습니다.

그것을 주파수 영역으로 변환하면

그래서

복원된 이미지는 역 푸리에 변환을 수행하여 얻을 수 있습니다.

  1. 위너 필터링의 원리

Wiener 필터링은 또 다른 일반적인 이미지 복원 방법으로 계산 복잡도가 상대적으로 작고 노이즈의 영향이 고려됩니다. 일반적으로 이미지와 노이즈가 서로 독립적이고 평균값이 0인 경우가 하나 이상 있다고 가정하고 복원된 이미지와 블러링된 이미지의 계조가 선형일 때 Wiener 필터링은 다음과 같이 표현할 수 있습니다.

그 중 Sn(u,v) 는 노이즈 파워 스펙트럼이고, Sf(u,v) 는 원본 이미지 파워 스펙트럼입니다.

  1. Matlab 시뮬레이션 결과

  1. 역 필터링 시뮬레이션 결과

위 그림에서 알 수 있듯이 원본 이미지는 육안으로 볼 수 있는 노이즈가 없는 오로라 장면입니다. 이미지가 크게 줄어들지만 동시에 원본 이미지의 노이즈와 유사한 별을 필터링합니다.

  1. Wiener 필터링 시뮬레이션 결과

Wiener 필터링으로 복원한 후에는 이미지의 노이즈가 크게 줄었지만 역 필터링과 달리 Wiener 필터링 후 이미지의 별은 노이즈로 간주하지 않고 완전히 필터링되었습니다.

  1. 반복 Wiener 필터링 시뮬레이션 결과

위의 그림과 같이 반복 Wiener 필터링은 이미지 복원에 좋은 영향을 미치며 대부분의 노이즈를 필터링할 수 있습니다. 몇 번의 반복 끝에 이미지가 잘 복구되었습니다. 반복 횟수가 특정 상한선에 도달한 후에는 효과가 크게 변경되지 않습니다.

코드

% Load image
img = imread('C:\Users\songy\OneDrive\Pictures\sample.png');
% Convert to grayscale
img_gray = rgb2gray(img);
% Add Gaussian white noise
noisy_img = imnoise(img_gray, 'gaussian', 0, 0.01);
% Perform Wiener filtering
filtered_img = wiener2(noisy_img, [5 5]);
% Display the filtered image
subplot(1,3,1)
imshow(img_gray)
title('原图')
subplot(1,3,2)
imshow(noisy_img)
title('加入高斯白噪声的图像')
subplot(1,3,3)
imshow(filtered_img)
title('维纳滤波后的图像')

%迭代部分,单独执行
img1=wiener2(noisy_img, [5 5]);
img2=wiener2(img1, [5 5]);
img3=wiener2(img2, [5 5]);
img4=wiener2(img3, [5 5]);
subplot(2,2,1)
imshow(noisy_img)
title('带噪声图')
subplot(2,2,2)
imshow(img1)
title('第一次迭代')
subplot(2,2,3)
imshow(img2)
title('第二次迭代')
subplot(2,2,4)
imshow(img3)
title('第三次迭代')
%% 加载图像
I=imread('C:\Users\songy\OneDrive\Pictures\sample.png');
%% 生成维纳滤波器
% Convert to grayscale
img_gray = rgb2gray(I);
% Add Gaussian white noise
noisy_img = imnoise(img_gray, 'gaussian', 0, 0.01);
N=5; % 维纳滤波器大小
sigma=2; % 标准差
h=fspecial('gaussian',N,sigma);
%% 逆滤波处理
J=imfilter(noisy_img,h,'symmetric');
%% 显示结果
figure;
subplot(1,3,1);
imshow(img_gray);
title('原始图像');
subplot(1,3,2);
imshow(noisy_img);
title('加入高斯白噪声');
subplot(1,3,3);
imshow(J);
title('逆滤波恢复后的图像');

추천

출처blog.csdn.net/qq_22471349/article/details/129168394