バイナリ イメージがあり、そこから値 1 (白いピクセル) のピクセルをランダムに選択する必要があります。仕事をするためにwhile/ifループを書きました。これが私のコードです:
Clear all
clc
% I have defined matrix A as an example of a given bw image
A=[0 0 1 0 0;0 0 0 1 0;0 1 0 0 0;0 0 0 1 0;1 0 0 0 0];
bwImage=mat2gray(A);
Number_Of_Pixls = numel(bwImage)
Number_Of_Interest_Points=numel(find(bwImage))
% randomly select a pixel
condition=0;
while ~(condition)
RandomPixel = randi(Number_Of_Pixls)
bwImage(RandomPixel) % to show the value of the selected pixel
if bwImage(RandomPixel) == 1
condition = 1; break
else
continue
end
end
SelectedPixel =RandomPixel % show which pixel had been selected
このコードは機能しますが、多数のピクセルを含む実際の画像になると、この検索プロセスは非常に網羅的になり、計算コストが高くなるため、実際には役に立たなくなります。この仕事をより速く行う方法はありますか?