与えられた行列の点の3x3ブロックを、その点をブロックの中心にして構築したいと考えています。あなたが見ることができるようにピクセルの座標が与えられています。
function frmBlock = fetchNeighbors(frame, row, column)
%Create a 3x3 matrix contains the neighbors of the point(x, y)
%[n, m] = size(frame);
frmBlock = zeros(3, 3);
x = floor(row);
y = floor(column);
frmBlock(1) = frame(x-1, y-1);
frmBlock(2) = frame(x, y-1);
frmBlock(3) = frame(x+1, y+1);
frmBlock(4) = frame(x-1, y);
frmBlock(5) = frame(x, y);
frmBlock(6) = frame(x+1, y);
frmBlock(7) = frame(x-1, y+1);
frmBlock(8) = frame(x, y+1);
frmBlock(9) = frame(x+1, y-1);
end
、私は私が何をしたいのかを0で初期化さ3×3行列を入力して座標(行、列)のすべてのネイバーとその行列を埋めるためです作成:これは私のコードです。私が何らかの理由で隣人を得ることができないなら、私は何もしません(つまり、3x3ブロック内のその位置を0にします)。
私はこのコードを実行すると、私はエラーが言ってしまった:
Error using fetchNeighbors (line 12) Index exceeds matrix dimensions.
誰かが助けることができますか?
RGB形式のカラー画像をお持ちの場合は、 'frmBlock = nan(3,3,3)'が必要です。三次元はRBGベクトルです。 'frmBlock(1,1、:)= frame(x-1、y-1、:)'は1ピクセル分トリックを行う。 – Crowley
いいえ私はカラーイメージがありません。 – SenDjasni
私の質問が更新されます。 – SenDjasni