我想爲一個給定矩陣點建立一個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.初始化的3x3矩陣我想要做的就是爲了填補矩陣座標所有鄰居輸入(行,列) 。如果由於某種原因我無法得到鄰居,我什麼也不做(即讓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,:)'應該爲一個像素做訣竅。 – Crowley
不,我沒有彩色圖像。 – SenDjasni
我更新我的問題。 – SenDjasni