傅立叶变换之图像目标定位-matlab

傅立叶变换中的目标定位 and 卷积应用中的目标特征识别
写这篇文章的感觉就是一句话:我想验证:**时域中的卷积操作等于频域中的乘积,也就是这个公式:f*g(x) = F(x)*G(x),**这句话。
直接上代码:每一行代码都有注释,有兴趣的小伙伴,可以仔细瞧一瞧。

clear all; clc; close all
bw = imread('text.png');
a = bw(32:45, 88:98); %从bw图像中提取一个a字符;
figure;imshow(bw);title('原图')
figure;imshow(a);title('识别的字母a')
%利用傅立叶变换定位text.png中a的位置
bwf = fftshift(fft2(bw));  %对bw进行二维离散傅立叶比变换,并中心化
figure;imshow(uint8(bwf))
%计算相关系数  ,,, 该处的目的与时域中的卷积性质一样
C1 = real(ifft2(fft2(bw) .* fft2(rot90(a,3), 256, 256))); %将bw的傅立叶变换与a旋转270度后的傅里叶变换相乘,检测竖直方向上a的位置
C2 = real(ifft2(fft2(bw) .* fft2(rot90(a,2), 256, 256))); %将bw的傅立叶变换与a旋转180度后的傅里叶变换相乘,检测水平方向上a的位置
figure;
subplot(121);imshow(C1,[]);title('检测竖直方向上a的位置处理后的图片')
subplot(122);imshow(C2,[]);title('检测水平方向上a的位置处理后的图片')
max(C1(:)) %计算C1的最大值
max(C1(:)) %计算C2的最大值
thresh = 60; %设定阈值,该阈值属于经验值,是根据max(C1(:))和max(C2(:))的值设定的
C1 = C1>thresh;
C2 = C2>thresh;
figure;
subplot(121);imshow(C1,[]);title('设定阈值为60处理后检测竖直方向上a的图片')
subplot(122);imshow(C2,[]);title('设定阈值为60处理后检测水平方向上a的图片')
C = C1+C2; %将处理后的C1和C2相加,得到竖直和水平方向的a的位置
figure;imshow(C,[]);title('采用傅立叶变换定位到图片中所有a的位置')
[m,n] = size(C);

%输出a点的个数,以及位置
b=0
for i=1:m
    for j=1:n
        if C(i,j) == 1
            i,j,C(i,j)
            b = b+1;
        end
    end
end


%使用时域中的卷积,验证:时域中的卷积等于频域中的乘积
a = double(a);
bw = double(bw);
D1 = conv2(bw, rot90(a, 2), 'same');
D2 = conv2(bw, rot90(a, 3), 'same');
D = D1+D2;
max(D1(:))
max(D2(:))
figure;
subplot(121);imshow(D1,[]);title('检测竖直方向上a的位置处理后的图片')
subplot(122);imshow(D2,[]);title('检测水平方向上a的位置处理后的图片')

thresh = 60;
D1 = D1>thresh;
D2 = D2>thresh;
D = D1+D2;
figure;
subplot(121);imshow(D1,[]);title('设定阈值为60处理后检测竖直方向上a的图片')
subplot(122);imshow(D2,[]);title('设定阈值为60处理后检测水平方向上a的图片')

figure;
subplot(121);imshow(C,[]);title('采用傅立叶变换定位到图片中所有a的位置')
subplot(122);imshow(D,[]);title('采用卷积操作定位到图片中所有a的位置')

注:‘text.png’是MATLAB自带的一张图片,目的是识别图片中的字母‘a’。
结果:
原图:
在这里插入图片描述
截取的a的图片:
在这里插入图片描述
傅立叶变换:
在水平和竖直方向上进行傅立叶变换后的图片:
在这里插入图片描述
阈值为60滤波之后的图片:
在这里插入图片描述
a定位的结果:
在这里插入图片描述
卷积操作:
在水平和竖直方向上进行卷积操作后的图片:
在这里插入图片描述
阈值为60滤波之后的图片:
在这里插入图片描述
a定位的结果:与傅立叶变换的对比
在这里插入图片描述
从上面的操作结果来看,两种实现过程得到的结果一致。调皮一下:证明书上没有骗人,嘿嘿,,,。。。

发布了15 篇原创文章 · 获赞 5 · 访问量 4397

猜你喜欢

转载自blog.csdn.net/qq_33668060/article/details/97690518