Matlab-零填充(2)

Matlab-零填充(2),matlab,Matlab,有人能帮忙吗?不知道为什么会出错 function padded_image=创建_padded_图像(图像,填充) 如果nargin在9处创建填充图像=创建填充图像(图像)这适用于灰度图像。从错误消息中,我怀疑您输入了彩色图像。要修复它,您需要同时填充所有3个颜色组件。我已将其更改为此,对于所有3个组件,在这之后我使用了[imshow('picture')],但我无法获得已填充零的显示图片……有什么想法吗?>>>%分配新填充图像的零数组填充图像=零(2*填充+图像大小(1),2*填充+图像大小

有人能帮忙吗?不知道为什么会出错

function padded_image=创建_padded_图像(图像,填充)
如果nargin<2
%如果没有传递填充-定义它。
填充=5;
终止
如果nargin<1
%如果没有给出图像,我们创建一个图像
image=imread('GreyScale.bmp');
填充图像=创建填充图像(图像)
终止
%图像尺寸是多少?
图像大小=大小(图像);
%分配新填充图像的零数组
填充图像=零(2*填充+图像大小(1),2*填充+图像大小(2));
%将图像写入填充图像的中心
填充图像(填充+1:填充+图像大小(1),填充+1:填充+图像大小(2))=图像;
终止
试试看


有人能帮忙吗?不知道为什么会出错???赋值中的非单例rhs维度多于非单例下标错误==>在17个填充图像处创建填充图像(填充+1:填充+图像大小(1),填充+1:填充+图像大小(2))=图像;错误==>在9处创建填充图像=创建填充图像(图像)这适用于灰度图像。从错误消息中,我怀疑您输入了彩色图像。要修复它,您需要同时填充所有3个颜色组件。我已将其更改为此,对于所有3个组件,在这之后我使用了[imshow('picture')],但我无法获得已填充零的显示图片……有什么想法吗?>>>%分配新填充图像的零数组填充图像=零(2*填充+图像大小(1),2*填充+图像大小(2) ,2*填充+图像大小(3));%将图像写入填充图像的中心填充图像(填充+1:填充+图像大小(1),填充+1:填充+图像大小(2),填充+1:填充+图像大小(3))=图像;您可能不想填充第三(颜色)维。尝试将其更改为:填充图像=零(2*填充+图像大小(1),2*padding+image\u size(2),3);然后:padding\u image(padding+1:padding+image\u size(1),padding+1:padding+image\u size(2),:)=image我已经尝试了你的方法,它可以用于编码,但是我如何以图片的形式显示结果?这样我就可以检查我的图片是否是零填充的?我必须使用[imshow('picturename')]或[imshow('padded\u image')]。因为我没法得到它。tks。嘿Nzbuu tks!它现在工作正常了!!我能知道这是什么吗?“大小(图像,3),类(图像)”它解决了我的问题!大小(U,3)返回沿三维的U的大小,即颜色通道的数量。类(U)返回U的类。然后是零(…)将创建具有相同颜色通道数和相同数据类型的内容。因此大小表示尺寸不受影响?类别表示级别也不受影响?零(…)将创建与此内容的大小和类别匹配的内容?非常感谢您的帮助!)
Assignment has more non-singleton rhs dimensions than non-singleton
subscripts Error in ==> create_padded_image at 17
padded_image(padding+1:padding+image_size(1),
padding+1:padding+image_size(2)) = image; Error in ==>
create_padded_image at 9 padded_image = create_padded_image(image)
function padded_image = create_padded_image(image, padding)  
if nargin < 2         
    % if no padding passed - define it.         
    padding = 5; 
end
if nargin < 1     
    % let's create an image if none is given
    image = imread('GreyScale.bmp');
    padded_image = create_padded_image(image) 

end  
    % what are the image dimensions? 
    image_size = size(image);   
    % allocate zero array of new padded image 
    padded_image = zeros(2*padding + image_size(1), 2*padding + image_size(2));
    % write image into the center of padded image 
    padded_image(padding+1:padding+image_size(1), padding+1:padding+image_size(2)) = image; 
end 
image_size = size(image);
padded_image = zeros(2*padding + image_size(1), 2*padding + image_size(2), size(image,3), class(image));
padded_image(padding+1:padding+image_size(1), padding+1:padding+image_size(2), :) = image;