Добавил:
t.me Инфо для ГУАП студентов от меня: https://kafaka.notion.site/99e6d9b70ca74f7baef3daea17839e5a Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

LR6 / LR6_1

.m
Скачиваний:
0
Добавлен:
18.06.2024
Размер:
2.25 Кб
Скачать
clc, clear, close all %очистка памяти
I = imread('image.jpg');
% перевод изображения в оттенки серого
% (получение матрицы яркости):
if (size(I,3) == 3) I = rgb2gray(I); end
I = im2double(I);
% Вычисление 2D-БПФ изображения:
%(получение матрицы центрированного спектра):
Spectr_input_image = fftshift(fft2(I));
A = abs(Spectr_input_image); % амплитудный спектр
A_max = max(max(A));
eps = A_max*10^(-6); %добавка, чтобы не вычислить lg(0)
A_dB = 20*log10(A + eps); % перевод в дБ
figure(1)
% вывод графика спектра изображения
imagesc(A_dB)
[M,N] = size(Spectr_input_image); % получение размера массива
% *********************************************************
% настраиваем пространственную частоту среза фильтра:
space_freq = 1;
% массив из единиц для маски фильтрации в частотной области
mask=ones([M, N]);
% задание маски ФВЧ (обнуляем элементы
% в прямоугольной области в окрестности центра):
mask(round(M/2) - space_freq : round(M/2) + space_freq, ...
round(N/2) - space_freq : round(N/2) + space_freq)=0;
% **********************************************************
% изменение спектра по формуле (1):
Spectr_output_image = Spectr_input_image.* mask;
figure(2)
% визуализация измененного спектра:
imagesc(20*log10(abs(Spectr_output_image)+eps))
% обратное 2D-БПФ:
J = (ifft2(ifftshift(Spectr_output_image), ...
'symmetric')); %обратное 2D-БПФ
% нормировка значений пикселей:
max_J = max(max(J));
output_image = im2uint8((J./max_J));
% инверсия яркостей пикселей,
% чтобы получить черные границы на белом фоне
output_image = 255 - output_image;
figure(3), imshow(I)
figure(4), imshow(output_image)
imwrite(output_image, 'edges_image.jpg');
Соседние файлы в папке LR6