0

首先,我不确定这里是否适合提出这个问题,但我有一个关于图像处理的问题。我正在尝试在 Matlab 中编写模式识别代码。我有一个对象输入,它是 256x256 像素的原始数据,其中包括“ABCD”大写字母,一个过滤器也是 256x256 像素的原始数据,包括“A”大写字母,并且整个字母的尺寸相同。我的代码将是:

  1. 首先在matlab中读取这两个原始数据文件,显示这些图像
  2. 取对象和滤波器的二维傅里叶变换,显示这些图像
  3. 取过滤器的共轭物,
  4. 将它们相乘
  5. 取 4 的二维傅里叶变换,
  6. 显示 5 的输出。

此代码旨在查找 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)

谢谢。

4

1 回答 1

1

您想在步骤 5 中进行傅里叶变换。

于 2011-03-01T01:27:47.663 回答