【问题标题】:Matlab- zero padding(2)Matlab-零填充(2)
【发布时间】:2011-09-29 02:19:50
【问题描述】:

有人可以帮忙吗?不知道为什么会报错? ???

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 

【问题讨论】:

  • 有人可以帮忙吗?不知道为什么会报错? ???赋值比非单子下标有更多的非单子右轴维度 ==> create_padded_image at 17 padded_image(padding+1:padding+image_size(1), padding+1:padding+image_size(2)) = image; ==> create_padded_image 在 9 padded_image = create_padded_image(image) 出现错误
  • 这适用于灰度图像。从错误消息中,我怀疑您已将彩色图像作为输入。要修复它,您需要同时填充所有 3 个颜色分量。
  • 我已将其更改为所有 3 个组件,之后我使用了 [imshow('picture')] 但我无法获得填充为零的显示图片..... .任何想法?>>> % 分配新填充图像的零数组 padded_image = zeros(2*padding + image_size(1), 2*padding + image_size(2), 2*padding + image_size(3)); % 将图像写入填充图像的中心 padded_image(padding+1:padding+image_size(1), padding+1:padding+image_size(2), padding+1:padding+image_size(3)) = image;
  • 您可能不想在第三个(颜色)维度中填充。尝试将其更改为: padded_image = zeros(2*padding + image_size(1), 2*padding + image_size(2), 3);然后:padding_image(padding+1:padding+image_size(1), padding+1:padding+image_size(2), :) = image
  • 我试过你的方法,它适用于编码,但我如何以图片形式显示结果?所以我可以检查我的图片是否是零填充的?我必须使用 [imshow('picturename')] 或 [imshow('padded_image')]。因为我无法得到它。 tks.

标签: matlab


【解决方案1】:

试试

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;

【讨论】:

  • 嘿Nzbuu tks!现在工作正常!!我能知道这是什么吗? "size(image,3), class(image)" 解决了我的问题!
  • size(U,3) 返回 U 沿第三维的大小,即颜色通道数。 class(U) 返回 U 的类。然后 zeros(...) 将创建具有相同颜色通道数和相同数据类型的东西。
  • 那么size就是说尺寸不受影响?和Class意味着级别也不会受到影响? zeros(...) 会创建与它的大小和类匹配的东西吗?非常感谢您的帮助! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-27
  • 2016-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-09
  • 1970-01-01
相关资源
最近更新 更多