gpt4 book ai didi

Matlab傅立叶描述符有什么问题?

转载 作者:太空宇宙 更新时间:2023-11-03 19:40:56 25 4
gpt4 key购买 nike

我正在使用 Gonzalez frdescp 函数来获取边界的傅立叶描述符。我使用这段代码,得到了两组完全不同的数字,它们描述了两个相同但比例不同的形状。

怎么了?

im = imread('c:\classes\a1.png');
im = im2bw(im);
b = bwboundaries(im);
f = frdescp(b{1}); // fourier descriptors for the boundary of the first object ( my pic only contains one object anyway )
// Normalization
f = f(2:20); // getting the first 20 & deleting the dc component
f = abs(f) ;
f = f/f(1);

为什么相同但比例不同的两个圆圈会得到不同的描述符?

最佳答案

问题是 frdescp 代码(我使用了 this code ,应该与您提到的相同)也是为了使傅立叶描述符居中而编写的。

如果您想以正确的方式描述您的形状,则必须保留一些关于表示直流分量的描述符是对称的。

下图总结了这个概念:

Cut-off of less significant descriptors

为了解决您的问题(以及其他类似您的问题),我编写了以下两个函数:

function descriptors = fourierdescriptor( boundary )
%I assume that the boundary is a N x 2 matrix
%Also, N must be an even number

np = size(boundary, 1);

s = boundary(:, 1) + i*boundary(:, 2);

descriptors = fft(s);

descriptors = [descriptors((1+(np/2)):end); descriptors(1:np/2)];
end

function significativedescriptors = getsignificativedescriptors( alldescriptors, num )
%num is the number of significative descriptors (in your example, is was 20)
%In the following, I assume that num and size(alldescriptors,1) are even numbers

dim = size(alldescriptors, 1);

if num >= dim
significativedescriptors = alldescriptors;
else
a = (dim/2 - num/2) + 1;
b = dim/2 + num/2;

significativedescriptors = alldescriptors(a : b);
end
end

知道了,你可以按如下方式使用上面的函数:

im = imread('test.jpg');
im = im2bw(im);
b = bwboundaries(im);
b = b{1};

%force the number of boundary points to be even
if mod(size(b,1), 2) ~= 0
b = [b; b(end, :)];
end

%define the number of significative descriptors I want to extract (it must be even)
numdescr = 20;

%Now, you can extract all fourier descriptors...
f = fourierdescriptor(b);
%...and get only the most significative:
f_sign = getsignificativedescriptors(f, numdescr);

关于Matlab傅立叶描述符有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9967527/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com