私は白黒画像を持っています。イメージビューアでこのイメージの特定のcoordinate (x,y)
を見ると、値が0
であることがわかりました。しかし、私のスクリプトで(x,y)
から値を取得したい場合は、255
が得られます。コードは以下のようになります。matlabで黒のピクセルを白にする
bw = imread('my_map.png');
imshow(bw);
hold on
% find corners of obstacles
corners = detectHarrisFeatures(bw);
plot(corners.selectStrongest(50));
cornerPoints = corners.selectStrongest(50);
hold on
% determine line's equation for two particular corners
m = cornerPoints.Location(4,2)-cornerPoints.Location(3,2);
n = cornerPoints.Location(4,1)-cornerPoints.Location(3,1);
k = (m)/(n);
b = cornerPoints.Location(3,2) - k*cornerPoints.Location(3,1);
%determine if this line intersects any obstacle
black = 0;
white = 0;
for y=cornerPoints.Location(3,2):1:cornerPoints.Location(4,2)
x = (y-b)/k;
if (int16(x) == 0)
x = cornerPoints.Location(3,1);
end
plot(int16(x),int16(y),'r*')
hold on
c = bw(int16(x), int16(y));
if (c==255)
white=white+1;
else
black=black+1;
end
end
if (white == 0)
display('valid')
else if (black <= 2)
display('valid')
else
display('invalid')
end
画像がこの
です。
何が問題なのですか?
私はあなたには、いくつかのコードを追加しますお勧めします。それ以外の場合、私はあなたが答えを得るとは思わない。 – Lukasz
おそらく座標系の原点に注意する必要があります。また、MATLABは1ベースのインデックス – Amro