【问题标题】:How to remove camera noises in CMOS camera如何去除 CMOS 相机中的相机噪音
【发布时间】:2012-11-02 15:08:31
【问题描述】:

在这里,我附上了由带有红外滤镜的 cmos 相机捕获的两个连续帧。在捕获图像时,对象检查板是静止的。但是两个图像之间的差异接近 31000 像素。这可能会影响我的结果你能告诉我这是什么噪音吗 谢谢。对不起我的英语不好。

图片1:[1]:http://i45.tinypic.com/2wptqxl.jpg

图片2:[2]:http://i45.tinypic.com/v8knjn.jpg

【问题讨论】:

  • 我发现图像之间的绝对差异。 a = imread('inputimage.jpg');b = imread('inputimage1.jpg');diff = abs(a - c);我知道这些噪音是可能发生的。但我的问题是如何使用一些图像处理技术来消除这些图像。这些图像是由 8 位深度的普通 jpeg 压缩模型保存的。是否有可能使用图像处理技术来避免这些噪音。
  • 你知道如果 ab 是整数类变量,比如 a=uint8(10); b=uint8(22); 那么 a-b = 0 ,对吗?图像之间的良好可变性将类似于std(double(a(:))-double(b(:))) 等...
  • ya..它很好..使用该标准值我如何确定它是否会受到噪音的影响?
  • std 只是一种衡量标准,您可以使用它来查看用于减少图像之间差异的任何技术是否有帮助。我将尝试用下面的一些技巧来回答......

标签: matlab image-processing opencv camera noise-reduction


【解决方案1】:

噪音似乎是由相机传感器(Bayer to RGB conversion) 引起的。棋盘图案仍然存在。

还有损 jpg 对这个过程也有很大贡献。您应该首先可以访问原始图像。

从这些特定图像中,我首先尝试使用边缘检测过滤器(Sobel 水平和垂直)制作一个掩码,在平坦区域的一些中值/局部直方图均衡之间进行选择,并将一些棋盘格减少过滤器应用于边缘。关键是,可能没有一个过滤器能够同时处理 jpeg 振铃伪影和锯齿状边缘。那么真正的问题是:应该处理哪些其他类型的图像?

来自 cmets:如果要精确地制作角点,则更有可能的解决方案是搜索特征(具有亚像素分辨率的角点)并从一组点映射到另一组角点图像,并搜索将这些集合相互转换的最佳仿射变换矩阵。有了这个矩阵,就可以对另一张图像进行重采样。

幸运的是,人们可以用亚像素分辨率估计运动矢量,而无需蛮力搜索所有可能的亚像素位置:在计算匹配滤波器时,可以获得精确匹配的潜在候选者的局部最大值。但这还不是全部。可以通过研究附近像素中的匹配滤波器输出来尝试计算更精确的峰值位置近似值。对于精确匹配,输出应该是对称的。否则,匹配滤波器的“能量”会偏向次佳位置。 (二次多项式拟合+找到最大值可以工作。)

【讨论】:

  • 谢谢 Aki...但这是一个主要问题。无法直接访问原始图像。它将使用相机驱动程序以 jpeg 格式保存。是否有任何图像处理技术可以删除那些声音??
【解决方案2】:

仔细看这些图片,我必须同意@Aki Suihkonen。 在我看来,主要的噪音来自 jpeg 压缩,这会导致尖锐的边缘“响起”。我会在图像上尝试“去斑”类型的过滤器,看看这是否会有所不同。可以在link 中找到一些可以帮助您实现这一点的信息。

以一种更快速和肮脏的方式,您应用 一个 许多 标准工具,例如,假设图像是 ab

(i) 只需使用高斯滤波器对图像进行平滑处理,这可以将图像之间的噪声差异降低一个数量级。例如:

  h=fspecial('gaussian',15,2);
  a=conv2(a,h,'same');
  b=conv2(b,h,'same');

(ii) 通过自适应滤波降低噪声

 a = wiener2(a,[5 5]);
 b = wiener2(b,[5 5]);

(iii) 使用直方图均衡调整强度值

 a =  histeq(a);
 b =  histeq(b);

(iv) 将强度值调整到指定范围

 a = imadjust(a,[0 0.2],[0.5 1]);
 b = imadjust(b,[0 0.2],[0.5 1]);

【讨论】:

    【解决方案3】:

    如果您的图像应该是黑白的,但您以灰度捕获它们,则可能会因噪点而出现差异。 您可以通过定义阈值将图像转换为黑白,值小于该阈值的任何像素都应分配为 0,大于该阈值的任何像素应分配 1,或者无论您的灰度范围是什么(可能是 255)。 假设您的图像是I,假设您的图像灰度级别是从 0 到 255,使其变为黑白,假设您选择的阈值为 100:

    ind = find(I < 100);
    I(ind) = 0;
    ind = find(I >= 100);
    I(ind) = 255;
    

    现在你有一张黑白图像,对另一张图像做同样的事情,如果相机和主体移动了音符,你应该得到非常小的差异。

    【讨论】:

    • 感谢TJ的回复。我需要找到正方形的精确角(亚像素角检测)。那么没有可能使用黑白图像。我们只需要使用灰色图像.由于这种噪音,角点是多种多样的。那么如何让所有帧的角点完全相同??
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-10
    • 2014-12-15
    • 1970-01-01
    • 1970-01-01
    • 2015-10-13
    • 1970-01-01
    相关资源
    最近更新 更多