Imshow(255*h), title('Окно фильтра')
H = fft2(h);
SH=abs(H);
SHc= fftshift(SH);
SHlog=log(1+SHc);
figure
Imshow(sHlog, [ ]);
title('Частотная характеристика фильтра');
На рисунках приведен вид окна фильтра (левый рисунок) и его частотной характеристики (правый рисунок). Параметр sigma определяет размер окна фильтра, чем больше sigma, тем больше окно фильтра.
Дискретизация изображения в МАТЛАБ
Ниже приведен пример программы, реализующей процедуру дискретизации изображения. Показано, как изменяется спектр изображения в результате его дискретизации, а также – как восстановить непрерывное изображение по его отсчетам.
Пример:
clear;
close all;
J = imread('cameraman.tif');
sigma=2;
h = fspecial('gaussian', sigma);
g = imfilter(J,h);
figure, imshow(g);
title('Исходное изображение с ограниченным спектром')
F = fft2(g);
S=abs(F);
Fc= fftshift(S);
Slog=log(1+Fc);
figure
Imshow(Slog, [ ]);
title('Спектр исходного изображения');
for i=1:256;
for j=1:256;
D(i,j)=0;
end
end
Dxy=3; %Шаг дискретизации
%Двумерная решетчатая функция с шагом Dxy по обоим координатам
for i=1:256/Dxy;
for j=1:256/Dxy;
D(i*Dxy,j*Dxy)=1;
end
end
%Собственно процедура дискретизации - умножение изображения
%на решетчатую функцию
for i=1:256;
for j=1:256;
f(i,j)=g(i,j)*D(i,j);
end
end
figure
imshow(f);
title('Дискретизованное изображение');
% Находим спектр дискретизованного изображения
FD = fft2(f);
S=abs(FD);
Fc= fftshift(S);
Slog=log(1+Fc);
figure
imshow(Slog, [ ]);
title('Спектр дискретизованного изображения');
sigma2=1.5;
% h - восстанавливающий двумерны ФНЧ
h = fspecial('gaussian', [256 256], sigma2);
H = fft2(h);
SH=abs(H);
SHc= fftshift(SH);
SHlog=log(1+SHc);
figure
imshow(250*h), title('АЧХ восстанавливающего фильтра')
% Процедура восстановления - фильтрация в частотной области
IF=FD.*H;
SIF=abs(IF);
SIFc= fftshift(SIF);
SIFclog=log(1+SIFc);
figure
imshow(SIFclog, [ ]);
title('Спектр на выходе фильтра');
FI = ifft2(IF);
FIAbs=abs(FI);
FIAbsc= fftshift(FIAbs);
figure
imshow(FIAbsc, [ ]);
title('Изображение на выходе восстанавливающего фильтра');
Квантование изображения по уровню
Дискретизация изображения по пространственным координатам является первым шагом перехода от аналогового изображения к цифровому. Второй шаг – это его квантование по уровню, то есть замена точных значений пикселей приближенными, округленными до ближайшего уровня квантования. Процедура квантования позволяет свести число возможных значений пикселя к конечному множеству значений, определяемому числом уровней квантования.
Квантование по уровню приводит к появлению ошибок квантования – разницы между точным и приближенным значением пикселя. На изображении это проявляется в виде характерных искажений, особенно заметных на участкак с плавным изменением яркости (цветов). Ниже приведен пример программы, иллюстрирующий проявление эффектов квантования для черно-белых и цветных изображений.
Пример:
%Квантование изображения
close all;
clear;
%DELTA - шаг квантования, N - число уровней квантования
N=8;
DELTA=round(255/(N-1));
F = imread('cameraman.tif');
figure; imshow(F);
J = DELTA*round(F/DELTA);
figure; imshow(J);
IM = imread('IMA.JPG');
figure; imshow(IM);
J1 = DELTA*round(IM/DELTA);
figure; imshow(J1);
Задание на самостоятельную работу.
1. Считайте из библиотеки MATLAB несколько различных изображений.
2. С использованием функции F = fft2(f) сформируйте и отобразите двумерные спектры изображений. При отображении спектра используйте либо логарифмический масштаб. С использованием функции fftshift приведите нулевую частоту в спектре к центру окна отображения.
С использованием функции ifft2(F) восстановите изображение по его спектру (используйте спектры с нулевой частотой в верхнем левом углу и с нулевой частотой в центре окна). Объясните получаемые в обоих случаях результаты.
С использованием функции fspecial('gaussian') задайте двумерный фильтр с параметрами [M N], sigma в области пространственных переменных. Отобразите в виде изображения вид окна этого фильтра.
Определите вид частотной характеристики данного фильтра. Отобразите АЧХ двумерного фильтра в виде изображения – imshow.
Измените параметр sigma фильтра, и повторите п.п. 5,6. Объясните различия в полученном результате.
Продискретизуйте изображение с шагом Dxy = 1, 2, 3, 4. Отобразите результат.
Определите и отобразите спектр дискретизованного изображения при различных значениях Dxy.
С использованием оконного фильтра, заданного функцией fspecial('gaussian'), выполните фильтрацию изображения в частотной области. Повторите опыт при различном значении параметра фильтра sigma. Объясните полученный результат.
Изучите проявление эффектов квантования на черно-белых и цветных изображениях при различном числе уровней квантования.
Оформите в электронном виде отчет по лабораторному практикуму.
