我想墊用零填充在邊界與在像素最接近的邊界值的矩陣,例如:最佳方式
A = rand(5);
Z = zeros(9);
Z(3:7, 3:7) = A;
現在,我想完成矩陣邊界以下列方式:
我正在尋找一個很好的解決方案沒有任何for循環
編輯:
它應該是這樣的:
我想墊用零填充在邊界與在像素最接近的邊界值的矩陣,例如:最佳方式
A = rand(5);
Z = zeros(9);
Z(3:7, 3:7) = A;
現在,我想完成矩陣邊界以下列方式:
我正在尋找一個很好的解決方案沒有任何for循環
編輯:
它應該是這樣的:
% Create a random image
I = round(rand(8)*70);
% Number of pixels to pad on each side
padSize = 3;
% Create a resulting image matric
sizeY = size(I,1);
sizeX = size(I,2);
J = zeros(sizeY + padSize*2, sizeX + padSize*2);
% Fill in the original
J((padSize+1):(padSize+sizeY) , (padSize+1):(padSize+sizeX)) = I;
% Fill in areas above, below and to the sides or original
%top
J(1:padSize, (padSize+1):(padSize+sizeX)) = repmat(I(1,:),padSize,1);
%bottom
J((padSize+sizeX+1):end, (padSize+1):(padSize+sizeX)) = repmat(I(end,:),padSize,1);
%left
J((padSize+1):(padSize+sizeY), 1:padSize) = repmat(I(:,1),1,padSize);
%right
J((padSize+1):(padSize+sizeY), (padSize+sizeY+1):end) = repmat(I(:,end),1,padSize);
% Fill in the corners
J(1:padSize, 1:padSize) = I(1,1);
J((padSize+sizeY+1):end, 1:padSize) = I(end,1);
J(1:padSize, (padSize+sizeX+1):end) = I(1,end);
J((padSize+sizeY+1):end, (padSize+sizeX+1):end) = I(end,end);
不錯!非常感謝 – Schnigges
你想padarray
與'replicate'
選項。例如,要複製在各方面的2x2邊框,
>> A = [1 2; 3 4];
>> B = padarray(A,[2 2],'replicate','both')
B =
1 1 1 2 2 2
1 1 1 2 2 2
1 1 1 2 2 2
3 3 3 4 4 4
3 3 3 4 4 4
3 3 3 4 4 4
目前還不清楚你想要做什麼。你能詳細說明嗎? – Phonon
要添加到Phonon的評論,您的矩陣如何與圖像相關?爲什麼有兩行/零列? – Adam
嗯...我想重複內部5x5矩陣的值到2邊框行和列的方式,這是底部的圖片描述的方式。突出顯示的框對應於這個5x5矩陣。希望這可以幫助。 – Schnigges