。
ローカル空間の最大値を検索します。
...
ローカル空間の最大値を半径+ 1
* 幅 2の正方形領域内の全ての隣接値より大きいこと値を有する画像点として定義されますしたがってimmaximas
は最も一般的な値を見つけることとは関係ありません。
数字のリストで最も一般的な要素をモードといいます。イメージの各ポイントで最も一般的な色を出力したい場合は、画像処理ツールボックスのnlfilter
を使用します。
imode = nlfilter(i, [64 64], 'sliding', @mode);
画像を使用して、モードを見つけ、次いで単一の値に画素を符号化することができuint8
タイプの3チャンネルである場合。また、エンコードされた値に1を加えてゼロ以外の値のモードしか見つからないように、エッジで暗黙のゼロパディングを無視するとよいでしょう。
i = uint32(imread('peppers.png'));
% encode 3 channel image into single channel
ienc = 1+bitor(bitor(i(:,:,1), bitshift(i(:,:,2),8)), bitshift(i(:,:,3),16));
% find the mode
imode = nlfilter(ienc, [64 64], @(x) mode(x(x~=0)));
% decode single into 3 channel image
idec = zeros(size(i));
idec(:,:,1) = bitand(uint32(255), imode(:,:,1)-1);
idec(:,:,2) = bitshift(bitand(uint32(65280), imode(:,:,1)-1),-8);
idec(:,:,3) = bitshift(bitand(uint32(16711680), imode(:,:,1)-1),-16);
idec = uint8(idec);
imshow(uint8(idec));
結果
おかげで非常にあなたの例をはるかに高く評価された - 私はオクターブ/ Matlabのを学んでいます。これを作成する時間をとっていただきありがとうございます:) –