如何拉伸图像的第一个左侧,右侧,顶部和底部行/列?

问题描述:

我有一个卫星图像,我想展示一个多尺度的例子。 所以我做的是,在图像周围添加零(黑色像素)并将图像放在中心。现在我怎样才能填充第一个左,右,上,下像素行/列的零点? 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

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

而是补零,从最高分辨率启动,并在彼此的中心放在较低分辨率图像。

这里是我的代码示例(你可以使用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

我认为你正在寻找'replicate'填充选项:

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

,导致:
enter image description here

如果您正在寻找平滑的结果,考虑使用regionfill

+0

谢谢,你能告诉我如何使用'regionfill'? – Addee

+0

@Addee你可以在链接的文档中阅读。 – Shai