0

バイナリ イメージがあり、そこから値 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

このコードは機能しますが、多数のピクセルを含む実際の画像になると、この検索プロセスは非常に網羅的になり、計算コストが高くなるため、実際には役に立たなくなります。この仕事をより速く行う方法はありますか?

4

3 に答える 3