如何消除CMOS相机中的相机噪音

时间:2012-11-14 05:20:03

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

在这里,我已经附加了两个连续帧,由带有红外滤镜的cmos相机拍摄。物体检查板在拍摄图像时是静止的。但是两个图像之间的差异接近31000像素。这可能会影响我的结果你可以告诉我这是什么类型的噪音?如何删除它。请建议我使用任何算法或任何可能消除这些噪音的功能。 谢谢。我的英语很差。

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

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

3 个答案:

答案 0 :(得分:2)

这种噪音似乎是由相机传感器(Bayer to RGB conversion)引起的。还有棋盘图案。

同样有损的jpg也为这个过程做出了很多贡献。您应首先访问原始图像。

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

根据评论:如果要使角点精确,那么解决方案更可能是搜索要素(具有子像素分辨率的角点)并从一组点到另一组角点进行映射,并搜索将这些集合相互转换的最佳仿射变换矩阵。使用此矩阵,可以对另一个图像执行重新采样。

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

答案 1 :(得分:2)

仔细观察这些图像,我必须同意@Aki Suihkonen。 在我看来,主要的噪音来自jpeg压缩,导致锋利的边缘“响”。我会尝试在图像上使用“去散斑”类型的滤镜,看看这是否有所不同。可以在此link中找到可以帮助您实现此功能的一些信息。

以更加快速和肮脏的方式,您应用一个 多个标准工具,例如,假设图像为a和{{1 }}:

(i)用高斯滤波器平滑图像,这可以将图像之间的噪声差异减小一个数量级。例如:

b

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

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

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

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

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

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

答案 2 :(得分:0)

如果您的图像应该是黑白的,但是您已经以灰度捕获它们,则可能会因噪声而产生差异。 您可以通过定义阈值将图像转换为黑白图像,任何值小于该阈值的像素都应该被指定为0,并且任何大于该阈值的像素都应该被指定为1,或者您的灰度级范围(可能是255)。 假设您的图像为I,假设您的灰度图像级别为0到255,则假设您选择100的阈值:

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

现在你有一张黑白图像,为另一张图像做同样的事情,如果相机和拍摄对象有笔记移动,你应该得到非常小的差异。