Experimento de restauración de imágenes

1. El propósito del experimento:

1. Comprender el modelo de procesamiento de degradación/restauración de imágenes.
2. Comprender los principios básicos de la estimación de funciones degradadas.
3. Dominar modelos comunes de ruido y métodos de estimación de parámetros, principios básicos y pasos de implementación en imágenes degradadas.
4. Profundice la comprensión de varios métodos de restauración de imágenes de uso común.

2. Principio experimental:

Para los sistemas invariantes de desplazamiento lineal, el proceso de degradación de la imagen en el dominio espacial generalmente se modela como una forma de convolución.Si se conocen la función de dispersión de puntos y el ruido aditivo, es fácil invertir la función de imagen original. Dado que existen problemas de cálculo a gran escala en la restauración directa en el dominio espacial, la restauración generalmente realiza la restauración de la imagen en el dominio de la frecuencia después de realizar la transformada de Fourier en la imagen.

(1) Restauración sin restricciones: filtrado de Wiener (error cuadrático medio mínimo)
El filtrado de Wiener también se conoce como filtrado de mínimos cuadrados, que es un método de restauración que minimiza el error cuadrático medio entre la imagen original y su imagen restaurada. El objetivo principal de realizar el filtrado de Wiener en la imagen es eliminar el ruido existente en la imagen.

(2) Restauración restringida: restauración restringida suave (filtro de mínimos cuadrados restringidos) El
filtro de mínimos cuadrados restringidos es un método de restauración lineal que es relativamente fácil de implementar. La restauración restringida requiere no solo el conocimiento de la función de transferencia del sistema degradado, sino también un ciertas Las características estadísticas de algún ruido o alguna correlación entre el ruido y la imagen.

3. Pasos de contenido del experimento (registre los pasos principales del experimento y, después de que la depuración sea exitosa, tome una captura de pantalla o tome una foto para guardar el resultado)

1. Lea una imagen en escala de grises en la biblioteca de imágenes seleccionada, realice el desenfoque y la degradación de la imagen con tipos motion(desenfoque de movimiento) y disk(desenfoque de desenfoque), y muestre la imagen antes y después del desenfoque.

lena = imread('lena.jpg');
lena_gray=rgb2gray(lena);

subplot(1,3,1);
imshow(lena_gray);
title('原始图像');

PSF = fspecial('motion',15,45);
h1 = fspecial('disk',40);
J1 = imfilter(lena_gray,PSF,'circular');
J2 = imfilter(lena_gray,h1,'circular');

subplot(1,3,2);
imshow(J1);
title('模糊运动图像');

subplot(1,3,3);
imshow(J2);
title('disk模糊图像');

inserte la descripción de la imagen aquí
2. Genere una imagen en formato de tablero de ajedrez de tamaño (consulte checkerboardcómo usar la función usted mismo), desenfoque y agregue ruido a la imagen, use la función de dispersión de puntos, NSRy NCORRcomo ICORRparámetros para restaurar la imagen degradada, y muestre y compare el resultados de restauración.

%生成一个120×120的棋盘图像
chessboard=checkerboard(10,60,60);
PSF1=fspecial('motion',7,45);
GB1=imfilter(chessboard,PSF1,'circular');

subplot(2,3,1);
imshow(chessboard);
title('棋盘格式图像');


%对棋盘图像进行加噪
noise_mean=0;
noise_var=0.05;
GB1=imnoise(GB1,'gaussian',noise_mean,noise_var); 
subplot(2,3,2);
imshow(GB1);
title('模糊加噪图像');

% 使用点扩散函数恢复降质图像
frest1=deconvwnr(GB1,PSF1); 
subplot(2,3,3);
imshow(frest1);
title('点扩散函数恢复降质图像');


Sn=abs(fft2(GB1)).^2;
nA=sum(Sn(:))/numel(GB1); %噪声平均功率1
Sf=abs(fft2(chessboard)).^2; %图像功率谱1
fA=sum(Sf(:))/numel(chessboard); %图像平均功率1
R=nA/fA;%计算噪声和信号比例


% 使用NSR恢复降质图像
fr2=deconvwnr(GB1,PSF,R);%使用deconvwnr函数生成常数比率的维纳滤波图像
subplot(2,3,4);
imshow(fr2);
title('NSR恢复降质图像');


% 使用NCORR和ICORR恢复降质图像
NCORR=fftshift(real(ifft2(Sn))); 
ICORR=fftshift(real(ifft2(Sf))); 
fr3=deconvwnr(GB1,PSF,NCORR,ICORR); 

subplot(2,3,5);
imshow(fr3);
title('NCORR和ICORR恢复降质图像');

inserte la descripción de la imagen aquí
deconvwnr3. Use el filtrado de Wiener ( ) y el filtrado de mínimos cuadrados ( ) para restaurar la imagen degradada en el contenido 1 deconvregy mostrar la imagen restaurada.

lena = imread('lena.jpg');
lena_gray=rgb2gray(lena);
subplot(2,2,1);
imshow(lena_gray);
title('原始图像');


LEN1=12;
THREN1=22;
PFS2=fspecial("motion",LEN1,THREN1);
fuzzy_lena=imfilter(lena_gray,PFS2,'circular'); %对图像进行模糊劣化
subplot(2,2,2);
imshow(fuzzy_lena);
title('模糊劣化图像');


deconvwnr_lena=deconvwnr(fuzzy_lena,PFS2);
subplot(2,2,3);
imshow(deconvwnr_lena);
title('采用维纳滤波复原图像');

least_squares_lena=deconvreg(fuzzy_lena,PFS2);
subplot(2,2,4);
imshow(least_squares_lena);
title('采用最小二乘法复原图像')

inserte la descripción de la imagen aquí
4. Escriba el filtro de mediana adaptable adpmedfilt(g, Smax)y analice las ventajas del filtro de mediana adaptable. El filtro mediano se ve muy afectado por el tamaño de la ventana de filtrado. Se utiliza para eliminar el ruido y proteger los detalles de la imagen. Habrá conflictos entre los dos, y el filtro mediano adaptativo puede cambiar dinámicamente la ventana del filtro mediano de acuerdo con el ajuste preestablecido. Condiciones Tamaño, para tener en cuenta los efectos de reducción de ruido y protección de detalles.

%自适应中值滤波函数
function f = adpmedian (g, Smax) 
if (Smax <= 1) || (Smax/2 == round(Smax/2)) || (Smax ~= round(Smax)) 
    error ('SMAX必须是一个大于1的奇数整数.') 
end 

f = g; 
f(:) = 0;
alreadyProcessed = false (size(g)); 

for k = 3:2:Smax 
    zmin = ordfilt2(g, 1, ones(k, k),'symmetric');
    zmax = ordfilt2(g, k * k, ones(k, k), 'symmetric'); 
    zmed = medfilt2(g, [k k], 'symmetric'); 
    processUsingLevelB  = (zmed > zmin) & (zmax > zmed) &...
        ~alreadyProcessed;
    zB = (g > zmin) & (zmax > g); 
    outputZxy = processUsingLevelB & zB; 
    outputZmed = processUsingLevelB & ~zB; 
    f (outputZxy) = g(outputZxy); 
    f (outputZmed) = zmed(outputZmed); 
    alreadyProcessed = alreadyProcessed | processUsingLevelB; 
    if all (alreadyProcessed (:)) 
        break; 
    end 
end 

f (~alreadyProcessed) = zmed (~alreadyProcessed); 
end

lena = imread('lena.jpg');
lena_gray=rgb2gray(lena);
subplot(1,3,1);
imshow(lena_gray);
title('原始图像');

LEN1=50;
THREN1=100;
PFS2=fspecial("motion",LEN1,THREN1);
fuzzy_lena=imfilter(lena_gray,PFS2,'circular'); %对图像进行模糊劣化
median_filtering_lena=adpmedian(fuzzy_lena,15);

subplot(1,3,2);
imshow(fuzzy_lena);
title('劣化图像');

subplot(1,3,3);
imshow(median_filtering_lena);
title('中值滤波图像')

inserte la descripción de la imagen aquí
5. Lea tres imágenes en escala de grises de la biblioteca de imágenes, agregue ruido de sal y pimienta, ruido gaussiano y ruido distribuido uniformemente a cada imagen y observe los cambios en la imagen. A continuación, utilice el filtro medio, el filtro mediano, el filtro mediano adaptativo y el método de filtro adaptativo basado en las características estadísticas del área local ( wiener2) para procesar la imagen de ruido y comparar los resultados procesados. A través de la comparación, se resumen las ventajas y las ocasiones de filtrado aplicables del filtrado adaptativo.
La ventaja del filtrado adaptativo: no solo puede filtrar el ruido de sal y pimienta con mayor probabilidad, sino que también puede conservar mejor
los detalles de la imagen, lo que es imposible para los filtros medianos convencionales.
Ocasiones de filtrado aplicables: cuando la densidad de ruido de la imagen no es muy grande.

%读取原始图像
wallpaper1=imread('wallpaper1.jpg');

%将图像转换为灰度图像
wallpaper1=rgb2gray(wallpaper1);

% 分别向wallpaperr1添加椒盐噪音、高斯噪声、均匀分布噪声
wallpaper1_salt_pepper=imnoise(wallpaper1,'salt & pepper',0.05);
wallpaper1_gauwallpaperian=imnoise(wallpaper1,'gaussian',0.05);
wallpaper1_speckle=imnoise(wallpaper1,'speckle',0.05);

% 对椒盐噪声图像依次用均值滤波,中值滤波、自适应中值滤波和二维自适应去噪滤波进行处理
wallpaper1_salt_pepper_mean_filtering=filter2(y11,wallpaper1_salt_pepper)/255;
wallpaper1_salt_pepper_median_filtering=medfilt2(wallpaper1_salt_pepper,[3,3]);
wallpaper1_salt_pepper_adaptive_median_filtering=adpmedian(wallpaper1_salt_pepper,15);
wallpaper1_salt_pepper_wiener2_filtering = wiener2(wallpaper1_salt_pepper,[5 5]);

% 对高斯噪声图像依次用均值滤波,中值滤波、自适应中值滤波和二维自适应去噪滤波进行处理
wallpaper1_gauwallpaperian_mean_filtering=filter2(y11,wallpaper1_salt_pepper)/255;
wallpaper1_gauwallpaperian_median_filtering=medfilt2(wallpaper1_salt_pepper,[3,3]);
wallpaper1_gauwallpaperian_adaptive_median_filtering=adpmedian(wallpaper1_salt_pepper,15);
wallpaper1_gauwallpaperian_wiener2_filtering = wiener2(wallpaper1_salt_pepper,[5 5]);

% 对均匀分布噪声图像依次用均值滤波,中值滤波、自适应中值滤波和二维自适应去噪滤波进行处理
wallpaper1_speckle_mean_filtering=filter2(y11,wallpaper1_salt_pepper)/255;
wallpaper1_speckle_median_filtering=medfilt2(wallpaper1_salt_pepper,[3,3]);
wallpaper1_speckle_adaptive_median_filtering=adpmedian(wallpaper1_salt_pepper,15);
wallpaper1_speckle_wiener2_filtering = wiener2(wallpaper1_salt_pepper,[5 5]);

subplot(5,3,1);imshow(wallpaper1_salt_pepper);title('添加椒盐噪音');
subplot(5,3,2);imshow(wallpaper1_gauwallpaperian);title('添加高斯噪声');
subplot(5,3,3);imshow(wallpaper1_speckle);title('添加均匀分布噪音');

subplot(5,3,4);imshow(wallpaper1_salt_pepper_mean_filtering);title('均值滤波');
subplot(5,3,5);imshow(wallpaper1_speckle_mean_filtering);title('均值滤波');
subplot(5,3,6);imshow(wallpaper1_salt_pepper_wiener2_filtering);title('均值滤波');

subplot(5,3,7);imshow(wallpaper1_salt_pepper_mean_filtering);title('中值滤波');
subplot(5,3,8);imshow(wallpaper1_speckle_mean_filtering);title('中值滤波');
subplot(5,3,9);imshow(wallpaper1_salt_pepper_wiener2_filtering);title('中值滤波');

subplot(5,3,10);imshow(wallpaper1_salt_pepper_mean_filtering);title('自适应中值滤波');
subplot(5,3,11);imshow(wallpaper1_speckle_mean_filtering);title('自适应中值滤波');
subplot(5,3,12);imshow(wallpaper1_salt_pepper_wiener2_filtering);title('自适应中值滤波');

subplot(5,3,13);imshow(wallpaper1_salt_pepper_mean_filtering);title('二维自适应去噪滤波');
subplot(5,3,14);imshow(wallpaper1_speckle_mean_filtering);title('二维自适应去噪滤波');
subplot(5,3,15);imshow(wallpaper1_salt_pepper_wiener2_filtering);title('二维自适应去噪滤波');

inserte la descripción de la imagen aquí

%读取原始图像
wallpaper2=imread('wallpaper2.jpg');

%将图像转换为灰度图像
wallpaper2=rgb2gray(wallpaper2);

% 分别向wallpaperr1添加椒盐噪音、高斯噪声、均匀分布噪声
wallpaper2_salt_pepper=imnoise(wallpaper2,'salt & pepper',0.05);
wallpaper2_gauwallpaperian=imnoise(wallpaper2,'gaussian',0.05);
wallpaper2_speckle=imnoise(wallpaper2,'speckle',0.05);

% 对椒盐噪声图像依次用均值滤波,中值滤波、自适应中值滤波和二维自适应去噪滤波进行处理
wallpaper2_salt_pepper_mean_filtering=filter2(y11,wallpaper2_salt_pepper)/255;
wallpaper2_salt_pepper_median_filtering=medfilt2(wallpaper2_salt_pepper,[3,3]);
wallpaper2_salt_pepper_adaptive_median_filtering=adpmedian(wallpaper2_salt_pepper,15);
wallpaper2_salt_pepper_wiener2_filtering = wiener2(wallpaper2_salt_pepper,[5 5]);

% 对高斯噪声图像依次用均值滤波,中值滤波、自适应中值滤波和二维自适应去噪滤波进行处理
wallpaper2_gauwallpaperian_mean_filtering=filter2(y11,wallpaper2_salt_pepper)/255;
wallpaper2_gauwallpaperian_median_filtering=medfilt2(wallpaper2_salt_pepper,[3,3]);
wallpaper2_gauwallpaperian_adaptive_median_filtering=adpmedian(wallpaper2_salt_pepper,15);
wallpaper2_gauwallpaperian_wiener2_filtering = wiener2(wallpaper2_salt_pepper,[5 5]);

% 对均匀分布噪声图像依次用均值滤波,中值滤波、自适应中值滤波和二维自适应去噪滤波进行处理
wallpaper2_speckle_mean_filtering=filter2(y11,wallpaper2_salt_pepper)/255;
wallpaper2_speckle_median_filtering=medfilt2(wallpaper2_salt_pepper,[3,3]);
wallpaper2_speckle_adaptive_median_filtering=adpmedian(wallpaper2_salt_pepper,15);
wallpaper2_speckle_wiener2_filtering = wiener2(wallpaper2_salt_pepper,[5 5]);

subplot(5,3,1);imshow(wallpaper2_salt_pepper);title('添加椒盐噪音');
subplot(5,3,2);imshow(wallpaper2_gauwallpaperian);title('添加高斯噪声');
subplot(5,3,3);imshow(wallpaper2_speckle);title('添加均匀分布噪音');

subplot(5,3,4);imshow(wallpaper2_salt_pepper_mean_filtering);title('均值滤波');
subplot(5,3,5);imshow(wallpaper2_speckle_mean_filtering);title('均值滤波');
subplot(5,3,6);imshow(wallpaper2_salt_pepper_wiener2_filtering);title('均值滤波');

subplot(5,3,7);imshow(wallpaper2_salt_pepper_mean_filtering);title('中值滤波');
subplot(5,3,8);imshow(wallpaper2_speckle_mean_filtering);title('中值滤波');
subplot(5,3,9);imshow(wallpaper2_salt_pepper_wiener2_filtering);title('中值滤波');

subplot(5,3,10);imshow(wallpaper2_salt_pepper_mean_filtering);title('自适应中值滤波');
subplot(5,3,11);imshow(wallpaper2_speckle_mean_filtering);title('自适应中值滤波');
subplot(5,3,12);imshow(wallpaper2_salt_pepper_wiener2_filtering);title('自适应中值滤波');

subplot(5,3,13);imshow(wallpaper2_salt_pepper_mean_filtering);title('二维自适应去噪滤波');
subplot(5,3,14);imshow(wallpaper2_speckle_mean_filtering);title('二维自适应去噪滤波');
subplot(5,3,15);imshow(wallpaper2_salt_pepper_wiener2_filtering);title('二维自适应去噪滤波');

inserte la descripción de la imagen aquí

%读取原始图像
wallpaper3=imread('wallpaper3.jpg');

%将图像转换为灰度图像
wallpaper3=rgb2gray(wallpaper3);

% 分别向wallpaperr1添加椒盐噪音、高斯噪声、均匀分布噪声
wallpaper3_salt_pepper=imnoise(wallpaper3,'salt & pepper',0.05);
wallpaper3_gauwallpaperian=imnoise(wallpaper3,'gaussian',0.05);
wallpaper3_speckle=imnoise(wallpaper3,'speckle',0.05);

% 对椒盐噪声图像依次用均值滤波,中值滤波、自适应中值滤波和二维自适应去噪滤波进行处理
wallpaper3_salt_pepper_mean_filtering=filter2(y11,wallpaper3_salt_pepper)/255;
wallpaper3_salt_pepper_median_filtering=medfilt2(wallpaper3_salt_pepper,[3,3]);
wallpaper3_salt_pepper_adaptive_median_filtering=adpmedian(wallpaper3_salt_pepper,15);
wallpaper3_salt_pepper_wiener2_filtering = wiener2(wallpaper3_salt_pepper,[5 5]);

% 对高斯噪声图像依次用均值滤波,中值滤波、自适应中值滤波和二维自适应去噪滤波进行处理
wallpaper3_gauwallpaperian_mean_filtering=filter2(y11,wallpaper3_salt_pepper)/255;
wallpaper3_gauwallpaperian_median_filtering=medfilt2(wallpaper3_salt_pepper,[3,3]);
wallpaper3_gauwallpaperian_adaptive_median_filtering=adpmedian(wallpaper3_salt_pepper,15);
wallpaper3_gauwallpaperian_wiener2_filtering = wiener2(wallpaper3_salt_pepper,[5 5]);

% 对均匀分布噪声图像依次用均值滤波,中值滤波、自适应中值滤波和二维自适应去噪滤波进行处理
wallpaper3_speckle_mean_filtering=filter2(y11,wallpaper3_salt_pepper)/255;
wallpaper3_speckle_median_filtering=medfilt2(wallpaper3_salt_pepper,[3,3]);
wallpaper3_speckle_adaptive_median_filtering=adpmedian(wallpaper3_salt_pepper,15);
wallpaper3_speckle_wiener2_filtering = wiener2(wallpaper3_salt_pepper,[5 5]);

subplot(5,3,1);imshow(wallpaper3_salt_pepper);title('添加椒盐噪音');
subplot(5,3,2);imshow(wallpaper3_gauwallpaperian);title('添加高斯噪声');
subplot(5,3,3);imshow(wallpaper3_speckle);title('添加均匀分布噪音');

subplot(5,3,4);imshow(wallpaper3_salt_pepper_mean_filtering);title('均值滤波');
subplot(5,3,5);imshow(wallpaper3_speckle_mean_filtering);title('均值滤波');
subplot(5,3,6);imshow(wallpaper3_salt_pepper_wiener2_filtering);title('均值滤波');

subplot(5,3,7);imshow(wallpaper3_salt_pepper_mean_filtering);title('中值滤波');
subplot(5,3,8);imshow(wallpaper3_speckle_mean_filtering);title('中值滤波');
subplot(5,3,9);imshow(wallpaper3_salt_pepper_wiener2_filtering);title('中值滤波');

subplot(5,3,10);imshow(wallpaper3_salt_pepper_mean_filtering);title('自适应中值滤波');
subplot(5,3,11);imshow(wallpaper3_speckle_mean_filtering);title('自适应中值滤波');
subplot(5,3,12);imshow(wallpaper3_salt_pepper_wiener2_filtering);title('自适应中值滤波');

subplot(5,3,13);imshow(wallpaper3_salt_pepper_mean_filtering);title('二维自适应去噪滤波');
subplot(5,3,14);imshow(wallpaper3_speckle_mean_filtering);title('二维自适应去噪滤波');
subplot(5,3,15);imshow(wallpaper3_salt_pepper_wiener2_filtering);title('二维自适应去噪滤波');

inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_51571728/article/details/124849438
Recomendado
Clasificación