1

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]); 

私は間違って何をしましたか?

4

1 に答える 1

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);

助けてくれてありがとう!

于 2014-07-30T13:10:13.827 に答える