如何拉伸图像的第一个左侧,右侧,顶部和底部行/列?
问题描述:
我有一个卫星图像,我想展示一个多尺度的例子。 所以我做的是,在图像周围添加零(黑色像素)并将图像放在中心。现在我怎样才能填充第一个左,右,上,下像素行/列的零点? 如何拉伸图像的第一个左侧,右侧,顶部和底部行/列?
Matlab代码:
img=imread ('example.jpg');
padcam = padarray(img,[1000 1000],'both');
编辑: 也许它很容易从这个图像解释。这张图片是我想要的,就是在黑色区域以这种方式重复海洋部分,看起来我们有大型空海和小船在中心。这就是为什么我做了,我不想重复红线/使复制/延伸的第一左,右,上,下像素行/列,以便使图像的中心和黑色将被转换为像素第一左值,右,顶部和底部像素行/列。
答
我不知道这是不是你的意思......
而是补零,从最高分辨率启动,并在彼此的中心放在较低分辨率图像。
这里是我的代码示例(你可以使用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);
检查以下内容:
这个例子是基于MATLAB Matlab的的imtransform
+0
感谢Rotem公司,但我要的是只显示在中心较低的规模图像,其余部分应该是紫色的背景等,作为顶行,底行,第一列和最后一列是紫色的,因此延长/重复大小的原始图像。所以我们会有很大的紫色背景和中心的小蔬菜。你有什么我想说的吗? – Addee
答
我认为你正在寻找'replicate'
填充选项:
padcam = padarray(img,[1000 1000],'both', 'replicate');
如果您正在寻找平滑的结果,考虑使用regionfill
。
并不清楚什么叫“填零” – Abhinav
此刻我有图像周围零的意思。我想将第一左,右,上,下行/列的像素值设置为零,而不是零。 – Addee
使用imrezise指令并将结果放入padarray函数中。 – MimSaad