【问题标题】:Conv2 function values goes above 255 when convolving an image and a window?卷积图像和窗口时,Conv2 函数值超过 255?
【发布时间】:2014-02-28 18:16:13
【问题描述】:

我有一个大小为 5*5 的窗口。一个大小为 360*300 的图像。当我使用函数对两者进行卷积时。我正在使用 matlab。

conv2(image,window,'same');

像素值高于 255。我使用下面的代码将值限制在 255 以下。

 ( conv2(image,window,'same')/sum(sum(window));

我有下面列出的 3 个问题。

  1. 这是正确的方法吗??
  2. 函数是否也处理此约束?
  3. 任何替代方法?

【问题讨论】:

  • 或者你可以确保窗口的总和等于一。顺便说一句,sum(sum(window)) 可以写成sum(window(:))
  • @Dan 如果我的窗口总和等于 1,我如何限制小于 255 的值?
  • 如果window中所有元素的总和小于1,那么卷积的结果永远不会大于我假设的图像最大值@987654327 @。所以这对你有限制。这和你正在做的事情基本上是一样的。

标签: matlab image-processing


【解决方案1】:

要指定 cmets 中所说的内容: 您的窗口的总和

ws = sum(window(:))

就像放大一样。如果ws>1,那么您的图像往往会变得更亮。如果0 < ws < 1 你的图像会变暗。如果ws = 0,那么您将收到一张图像,其平均值约为零。在边缘检测场景中经常出现这种情况。例如,Sobel Operator 的总和为零。

通常,卷积以等于 1 的放大率执行,以将放大与卷积分开。由于卷积是一个线性算子,所以无论是窗口除以ws 还是结果图像都没有关系。

特别要回答问题 1 和 3:通常的方法是标准化窗口。那就是:

window = window ./ sum(window(:)); % Normalize convolution kernel
conv2(image,window,'same');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-12
    • 2016-09-05
    • 1970-01-01
    • 1970-01-01
    • 2013-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多