我想使用Matlab在图像中找到某个对象。
此对象始终具有完全相同的形状,只有颜色不同:
我尝试使用基于点要素的对象检测算法,但由于此对象图像中没有足够的功能,因此这些算法不起作用。
有没有办法在我的图像中找到这个对象,因为每个图像中有一个这个对象的实例,例如它的独特形状? 此对象的比例可以更改,也可能不会完全显示为绿色(部分为灰色)。
我想要找到螺旋的图像示例是:
答案 0 :(得分:1)
使用模板尝试Phase Correlation图像。 以下是算法:
下面的代码实现了算法:
%% Load video frames and template
imageFile = 'image.png';
templateFile = 'template.png';
imageColor = imread(imageFile);
image = im2double( rgb2gray( imageColor ) );
template = im2double( rgb2gray( imread(templateFile) ));
[hI, wI] = size(image);
[hT, wT] = size(template);
%% Perform frequency domain correlation
templateDFT = fft2((template - mean2(template))/std2(template), hI, wI);
templateDFTMag = abs(templateDFT);
templateFilter = conj(templateDFT) ./ templateDFTMag;
imageDFT = fft2((image - mean2(image))/std2(image) );
imageDFTMag = abs(imageDFT);
corrDFT = imageDFT .* templateFilter ./ imageDFTMag;
corr = real(ifft2(corrDFT));
%% Detect peak and plot
[maxCorr, maxIdx] = max(corr(:));
[maxRow, maxCol] = ind2sub([hI wI], maxIdx);
figure; imshow(imageColor); hold on;
rectangle('Position', [maxCol-wT/2, maxRow-hT/2, wT, hT], 'EdgeColor', 'y');
以下是我得到的:
注意事项: