我有一個尺寸爲61x56的圖像,我想將圖像填充到392x392的大小。在MATLAB中填充圖像
我想使用padarray
但由於我得到一個非整數值,我無法做到這一點。誰能幫我這個。非常感謝!我附上了我想在下面做的事情。
K = imread('test.jpg');
K = rgb2gray(K);
[m n] = size(K);
p = 392;
q = 392;
K_pad = padarray(K, [(p-m)/2 (q-n)/2], 'replicate');
我有一個尺寸爲61x56的圖像,我想將圖像填充到392x392的大小。在MATLAB中填充圖像
我想使用padarray
但由於我得到一個非整數值,我無法做到這一點。誰能幫我這個。非常感謝!我附上了我想在下面做的事情。
K = imread('test.jpg');
K = rgb2gray(K);
[m n] = size(K);
p = 392;
q = 392;
K_pad = padarray(K, [(p-m)/2 (q-n)/2], 'replicate');
您可以將您的padarray
指令在兩個電話:
K_pad = padarray(K, [floor((p-m)/2) floor((q-n)/2)], 'replicate','post');
K_pad = padarray(K_pad, [ceil((p-m)/2) ceil((q-n)/2)], 'replicate','pre');
但是你可能要檢查什麼在圖像的角落發生的事情,看看它是確定你想要什麼用它做。
你可以試試這個功能:
function out1 = myresize(in1)
%% [email protected]
%% resize an image to closest power of 2
[m,n] = size(in1);
if(rem(m,2)~=0)
in1(1,:)=[];
end
if(rem(n,2)~=0)
in1(:,1)=[];
end
[m,n] = size(in1);
a = max(m,n);
if(log2(a)~=nextpow2(a) || m~=n)
s1 = 2^nextpow2(a);
n_row = (s1 - m)/2;
n_col = (s1 - n)/2;
dimension = [n_row,n_col];
out1 = padarray(in1,dimension);
end
end
例如:
A = ones(2,8);
out1 = myresize(A);
最先找到的最大的行和列,然後paddarray在這兩個方向上的矩陣。
非常感謝。它完美的作品。 – Sista
我不知道只有一個內存拷貝可以更有效地完成。 – Royi