你可以嘗試用零填充較小的圖像,即具有相同尺寸的放大圖像。例如
%Start with rows:
if size(I1,1) > size(I2,1) %I1 has more rows so pad I2
pad = zeros (size(I1,1) - size(I2,1), size(I2,2));
I2 = [I2 ; pad]; %Append the rows of zeros to the bottom of I2
else %I2 has more rows so pad I1
pad = zeros (size(I2,1) - size(I1,1), size(I1,2));
I1 = [I1 ; pad]; %Append the rows of zeros to the bottom of I1
%Pad the columns
if size(I1,2) > size(I2,2) %I1 has more rows so pad I2
pad = zeros (size(I2,1), size(I1,2) - size(I2,2));
I2 = [I2 , pad]; %Append the columns of zeros to the left of I2
else %I2 has more rows so pad I1
pad = zeros (size(I1,1), size(I2,2) - size(I1,2));
I1 = [I1 , pad]; %Append the columns of zeros to the left of I1
我沒有測試過,雖然,所以你可能需要擺弄了一下,以獲得完美的尺寸,如可能的大小(I2,2) - 大小(I1,2)+ 1,而不是大小(I2,2) - 大小(I1,2),這種事情。
但是,你需要首先弄清楚什麼你正在嘗試做的邏輯。用零填充可能在您的應用程序中沒有意義。此外,我的代碼墊在底部和左側,但您可能需要一直填充以使您的圖像位於新圖像的中心。
來源
2012-04-17 07:11:25
Dan
+1了很好的解釋。另一種選擇是將較大的圖像裁剪爲較小的圖像。 – 2012-04-17 07:22:37
呀,裁剪是一種可能性,但因爲它是信息的丟失,似乎不太可能。然而,還有其他選項,如填充,但不包含零。也許在邊緣或其他形式的外推中反映圖像。但它完全是上下文的。 – Dan 2012-04-17 07:28:30
對於圖像處理工具箱,你可以改用'padarray'。 – Jonas 2012-04-17 11:56:11