2017-02-20 33 views
1

我有一個衛星圖像,我想展示一個多尺度的例子。 所以我做的是,在圖像周圍添加零(黑色像素)並將圖像放在中心。現在我怎樣才能填充第一個左,右,上,下像素行/列的零點? enter image description here如何拉伸圖像的第一個左側,右側,頂部和底部行/列?

Matlab代碼:

img=imread ('example.jpg'); 
padcam = padarray(img,[1000 1000],'both'); 

編輯:
enter image description here 也許它很容易從這個圖像解釋。這張圖片是我想要的,就是在黑色區域以這種方式重複海洋部分,看起來我們有大型空海和小船在中心。這就是爲什麼我做了,我不想重複紅線/使複製/延伸的第一左,右,上,下像素行/列,以便使圖像的中心和黑色將被轉換爲像素第一左值,右,頂部和底部像素行/列。

+0

並不清楚什麼叫「填零」 – Abhinav

+0

此刻我有圖像周圍零的意思。我想將第一左,右,上,下行/列的像素值設置爲零,而不是零。 – Addee

+0

使用imrezise指令並將結果放入padarray函數中。 – MimSaad

回答

4

我不知道這是不是你的意思......

而是補零,從最高分辨率啓動,並在彼此的中心放在較低分辨率圖像。

這裏是我的代碼示例(你可以使用for循環代替):

I0 = imread('peppers.png'); 
I0 = padarray(I0,[16 16],'both'); %I0 - full resolution. 
I1 = imresize(I0, 0.5);   %I1 - half resolution. 
I2 = imresize(I0, 0.25);   %I2 - quarter resolution. 

J = I0; 

%Place I1 at the center of J. 
J(1+(end-size(I1,1))/2:(end+size(I1,1))/2, 1+(end-size(I1,2))/2:(end+size(I1,2))/2, :) = I1; 

%Place I2 at the center of J. 
J(1+(end-size(I2,1))/2:(end+size(I2,1))/2, 1+(end-size(I2,2))/2:(end+size(I2,2))/2, :) = I2; 

figure;imshow(J); 

結果:
enter image description here


檢查以下內容:
這個例子是基於MATLAB Matlab的的imtransform

文檔

結果:
enter image description here

+0

感謝Rotem公司,但我要的是隻顯示在中心較低的規模圖像,其餘部分應該是紫色的背景等,作爲頂行,底行,第一列和最後一列是紫色的,因此延長/重複大小的原始圖像。所以我們會有很大的紫色背景和中心的小蔬菜。你有什麼我想說的嗎? – Addee

3

我認爲你正在尋找'replicate'填充選項:

padcam = padarray(img,[1000 1000],'both', 'replicate'); 

,導致:
enter image description here

如果您正在尋找平滑的結果,考慮使用regionfill

+0

謝謝,你能告訴我如何使用'regionfill'? – Addee

+0

@Addee你可以在鏈接的文檔中閱讀。 – Shai

相關問題