我在MATLAB的计算机视觉工具箱中使用 detectMSERFeatures 函数,并且遇到了一些错误。我有一个黑白图像,我正在读取以检测其功能,但我想在运行特征检测之前反转图像,或者我正在过滤图像中的红色。因此,无论哪种方式,我都有一个二进制映像,我试图在 detectMSERFeatures 中使用它。我知道这不起作用,但我尝试了几种转换为可用的格式,但它们似乎都没有用。如果我在原始图像上使用 rgb2gray , detectMSERFeatures 将获取功能,但如果我尝试转换它,则不会。这是我到目前为止所尝试的一切:
Target1=imread('Decal0.JPG');
Target1bw=~im2bw(Target1);
Target=uint8(Target1bw);
[m,n]=size(Target);
regionsTarget = detectMSERFeatures(Target, 'MaxAreaVariation',0.15,...
'ThresholdDelta',15, 'RegionAreaRange',[10000 (m*n)/2]);
Target1=imread('Decal0.JPG');
Target1bw=~im2bw(Target1);
Target=im2double(Target1bw);
regionsTarget = detectMSERFeatures(Target, 'MaxAreaVariation',0.15,...
'ThresholdDelta',15, 'RegionAreaRange',[10000 (m*n)/2]);
Target1=imread('Decal0.JPG');
Target1bw=~im2bw(Target1);
Target2=255*Target1bw;
[m,n]=size(Target2);
Target3=zeros(m,n,3);
Target3(:,:,1)=Target2;
Target3(:,:,2)=Target2;
Target3(:,:,3)=Target2;
Target3=uint8(Target3);
Target=rgb2gray(Target3);
regionsTarget = detectMSERFeatures(Target, 'MaxAreaVariation',0.15,...
'ThresholdDelta',15, 'RegionAreaRange',[10000 (m*n)/2]);
我做错了什么?
答案 0 :(得分:1)
我把问题提到了Mathworks,这是MATLAB中的一个错误。以下是他们的回复:
"我们在处理二进制图像时检测到了detectMSERFeatures中的错误。解决方法是使用regionprops来检测二进制图像的区域。然后,MSERRegions可以构造如下:
props = regionprops(im2bw(newGrayTarget),'PixelList');
pixlist = {}
for i = 1:numel(props)
pixlist = [pixlist; int32(props(i).PixelList)]; end
r = MSERRegions(pixlist);
感谢您的帮助!