【问题标题】:Vectorized Pixel Doubling Interpolation in MatlabMatlab中的矢量化像素倍增插值
【发布时间】:2014-05-24 15:41:18
【问题描述】:

我有一个 NxMx3 的 unit8 矩阵,每个 (x,y,:) 都是 RGB 值的向量。我试图通过简单地将东部和南部相邻值复制一个像素来进行像素加倍插值。

eastNeighbors = [img(2:end,:,:)];
southNeighbors = [img(:,2:end,:)];

filtered = img + eastNeighbors + southNeighbors;

这个问题是我得到一个“数组尺寸必须匹配二进制数组操作。”错误。

如何将 [0, 0, 0] 元素的行和列分别添加到eastNeighbors 和 southNeighbors?

编辑:实际上,难道不应该有一种方法可以用 filter2 来实现吗?这基本上就是 FIR 滤波器 out(x,y) = in(x,y) + in(x-1, y-1),对吗?

试过这个:

h = [[1 1] [1 1]];

filtered = filter2(h, img);

得到“输入参数不足”。错误。

【问题讨论】:

    标签: matlab signals signal-processing interpolation vectorization


    【解决方案1】:

    这可能就是你想要的 -

    方法一:使用nlfilter进行滑动邻域操作

    fun1 = @(x) sum([x(2,2) x(3,2) x(2,3)]);
    OUTPUT_IMG = nlfilter(INPUT_IMG, [3 3], fun1);%%// INPUT_IMG is a gray image
    

    方法 2: 使用直接求和,通过用 padarray 填充零来匹配矩阵大小

    southNeighbors = padarray(INPUT_IMG(2:end,1:end),[1 0],'post');
    eastNeighbors = padarray(INPUT_IMG(1:end,2:end),[0 1],'post');
    OUTPUT_IMG = INPUT_IMG + eastNeighbors + southNeighbors;
    

    一般说明:

    如果您正在寻找interpolation,也许您想要找到这三个像素的平均值,所以除以3。注意uint8 数据类型,因为它会在汇总时截断255 的值。

    此外,您可能希望保持最后一行和最后一列与原始图像中的相同,因为它们没有东部和南部相邻像素,所以使用这个 -

    OUTPUT_IMG(:,end) = INPUT_IMG(:,end); 
    OUTPUT_IMG(end,:) = INPUT_IMG(end,:); 
    

    【讨论】:

    • 谢谢,这很有帮助。我最初的方法是错误的,因为这最终会使绿色值加倍,但这对于我必须实现双线性过滤器时会有所帮助。
    • 我不知道nlfilter!我在一个街区的 1x1 街区上使用 blockproc,但这似乎更容易使用
    • @LuisMendo 是的!这是一个非常漂亮的工具,很高兴能够在我在这里了解到这个时支付它!最好的知识分享! :)
    【解决方案2】:

    要填充您感兴趣的图像,您可以像这样使用 cat() 和 zeros() 的组合:

    eastNeighbors = cat(2, zeros(size(img,1), 1, size(img,3)), img(:,2:end,:));
    southNeighbors = cat(1, zeros(1, size(img,2), size(img,3)), img(2:end,:,:));
    
    filtered = img + eastNeighbors + southNeighbors;
    

    【讨论】:

      【解决方案3】:

      你可以用convn 来做,像这样:

      filtered = convn(img, [0 1 0; 1 1 0; 0 0 0]);
      

      【讨论】:

        猜你喜欢
        • 2012-09-12
        • 1970-01-01
        • 1970-01-01
        • 2020-02-11
        • 1970-01-01
        • 2016-01-24
        • 1970-01-01
        • 2016-08-22
        • 1970-01-01
        相关资源
        最近更新 更多