Matlab中的模式识别

时间:2011-03-01 00:56:39

标签: matlab fft pattern-recognition ifft

首先我不确定这是提出这个问题的正确位置,但我对图像处理有疑问。 我正在尝试在Matlab中编写模式识别代码。我有一个256x256像素的对象输入原始数据包含“ABCD”大写字母和一个256x256像素的过滤器原始数据包括“A”大写字母和整个字母在相同的维度。我的代码将是:

  1. 首先阅读这两个原始数据 matlab中的文件,显示这些图像
  2. 采取对象和过滤器的二维傅里叶变换,显示 这些图片
  3. 取过滤器的结合物,
  4. 将它们相乘
  5. 采用4维的二维傅里叶变换
  6. 显示5的输出。
  7. 此代码旨在查找输入和输出中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)
    

    感谢。

1 个答案:

答案 0 :(得分:1)

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