2014-10-17 150 views
1

我在畫布/圖中有一張照片,我希望在不調整照片大小(例如,在更大的「畫布」中顯示圖像)的情況下增加畫布/圖形的高度和寬度。我該怎麼做?在Matlab中更改圖像畫布大小

謝謝。

+0

爲什麼不墊的人(或NaN)的形象呢?請參閱'padarray' – 2014-10-17 21:39:32

+0

嗨,你可以提供我的例子與imread結合。謝謝。 – user2916044 2014-10-17 21:47:22

+0

如果您發佈代碼的最小子集,然後有人(我或其他人)可以添加填充,那將會更好。例如:您的圖像是作爲RBG圖像(MxNx3數組)還是索引圖像(MXN數組和顏色圖)讀取的? – 2014-10-17 22:11:40

回答

3

借用Luis Mendo在上述評論中的回答,請使用padarray。 ,你會叫它像這樣給你的圖像存儲在im

out = padarray(im, [rows cols], padval, 'both'); 

rowscols確定你的形象,這與both標誌一致要墊像素的邊框。 padval是當您增加畫布大小時要放在邊框上的值。你可以做任何符合你圖像類型的值。例如,您可以爲0爲黑色,255爲白色,128爲灰色等。例如,如果你想要做的行的10像素寬的邊框和5像素寬的邊框爲灰色的列,這樣做:

out = padarray(im, [10 5], 128, 'both'); 

這裏是在onion.png圖像的示例性負載存儲在MATLAB的系統路徑:

im = imread('onion.png'); 
out = padarray(im, [10 5], 128, 'both'); 
imshow(out); 

這就是我得到:

enter image description here

正如你所看到的,圖像的行填充在圖像開始之前(頂部)和之後(底部)具有10像素灰色邊框。同樣,圖像的列在圖像開始之前(左側)和之後(右側)用5像素灰色邊框填充。

簡單地調整你想要的行和列的灰度以滿足你的目的。

+0

很好的答案! (不是說OP已經顯示出很多努力,儘管...) – 2014-10-17 22:33:16

+0

@LuisMendo - 我無法抗拒與圖像處理有關的任何事情...... :(大聲笑。前幾天有人回覆我有人想要在不使用內置函數的情況下模仿'bwlabel',他們沒有表現出任何努力,但是我仍然編寫代碼......並且這也是一種很好的做法!...謝謝你:) – rayryeng 2014-10-17 22:34:36

+0

是的,我從中學到了東西。這是一個重要的獎勵! – 2014-10-17 22:35:58

1

如果您使用的是MATLAB圖形格式化,則可以通過將該軸的'units'參數設置爲'normalized'(例如'pixels')以外的值來鎖定圖形內的圖像大小。將其與圖形的'ResizeRcn'結合使用,可以自動重新定位圖像的座標軸,並且在調整圖形大小時圖像保持居中且大小相同。

holdimg.m

function holdimg(ha) 
% Hold axis/image size and centering in the figure. Input ha is the axis handle. 
assert(strcmpi(get(ha,'Type'),'axes')) 

set(ha,'Units','pixels'); 
pa = get(gca,'pos'); sz = pa(3:4); 
set(ancestor(ha,'figure'),'ResizeFcn',@axResizeFn); 

    function axResizeFn(varargin) 
     pf = get(varargin{1},'pos'); % varargin{1} is figure handle 
     set(ha,'pos',[(pf(3:4)-sz)/2 sz]) 
    end 

end 

使用

>> imshow(imread('cameraman.tif')) 
>> % now manually resize the image (via figure size) to desired size 
>> holdimg(gca) % lock image size 
>> % now resize figure, image stays centered and constant size 

Demonstration (3MB animated GIF).

+0

哇...漂亮的動畫GIF! – rayryeng 2014-10-18 05:17:04

+0

@rayryeng任何動畫的藉口......和嵌套函數!太糟糕了,這完全不是OP的內容。好吧! – chappjc 2014-10-18 15:49:26

+0

也許是未來的觀衆...... – chappjc 2014-10-18 15:58:59