сначала я не уверен, что это правильное место, чтобы задать этот вопрос, но у меня есть вопрос об обработке изображений.
Я пытаюсь написать код распознавания образов в Matlab. У меня есть объектный ввод размером 256x256 пикселей, необработанные данные включают в себя заглавную букву "ABCD" и фильтр, который также содержит необработанные данные 256x256 пикселей, включая заглавную букву "A", и все буквы имеют одинаковые размеры. Мой код будет:
- Сначала прочитайте эти два необработанных данных
файлы в matlab, показать эти изображения
- Возьмите 2-мерную Фурье-форму объекта и фильтра, покажите
эти изображения
- Возьмите конъюгат фильтра,
- Умножить их
- Возьмите 2-мерную Фурье-форму 4,
- показать выход 5. 5. 1014 *
Этот код предназначен для поиска автокорреляции A на входе и на выходе. При этом взаимные корреляции между B, C, D и A в фильтре будут на выходе, но их интенсивности будут меньше, чем автокорреляция A.
Вкратце, в этом коде мы пытаемся использовать метод свертки, а не корреляцию, и делаем это в частотной области.
Я написал код, но он не работает точно, особенно выводится неправильное изображение.
Я также ищу правильную функцию для загрузки необработанных файлов в Matlab.
Мой код:
%%%EE 520 HW 3
%%%Problem # 2
clear all; close all; clc;
load fA258.mat;
load fO.mat;
figure(1)
subplot(211)
imshow(o)
title('Image of the OBJECT');
subplot(212)
imshow(fa)
title('Image of the FILTER');
F=fft2(fa,256,256);
F1=fftshift(F);
F2=log(abs(F));
O=fft2(o,256,256);
O1=fftshift(O);
O2=log(abs(O));
f1=ifft2(F);
o1=ifft2(O);
figure(2)
subplot(211);
imshow(o1);
title('Check for Object');
subplot(212)
imshow(f1);
title('Check for Filter');
figure(3)
subplot(211)
imshow(log(abs(fftshift(O)) + 1), [])
title('FT of Object');
subplot(212)
imshow(log(abs(fftshift(F)) + 1), [])
title('FT of Filter');
Fc=conj(F1);
Y=O1.*Fc;
y=fft2(Y);
figure(4)
subplot(211)
imshow(log(abs(fftshift(y)) + 1), [])
title('Output');
subplot(212)
imshow(y)
Спасибо.