在这里,我附上了由带有红外滤镜的 cmos 相机捕获的两个连续帧。在捕获图像时,对象检查板是静止的。但是两个图像之间的差异接近 31000 像素。这可能会影响我的结果。你能告诉我这是什么噪音?我怎样才能消除它。请建议我任何可能的算法或任何功能来消除这些噪音。谢谢。对不起,我的英语很差。
图片1:[1]:http: //i45.tinypic.com/2wptqxl.jpg
图片2:[2]:http: //i45.tinypic.com/v8knjn.jpg
在这里,我附上了由带有红外滤镜的 cmos 相机捕获的两个连续帧。在捕获图像时,对象检查板是静止的。但是两个图像之间的差异接近 31000 像素。这可能会影响我的结果。你能告诉我这是什么噪音?我怎样才能消除它。请建议我任何可能的算法或任何功能来消除这些噪音。谢谢。对不起,我的英语很差。
图片1:[1]:http: //i45.tinypic.com/2wptqxl.jpg
图片2:[2]:http: //i45.tinypic.com/v8knjn.jpg
该噪声似乎是由相机传感器引起的(拜耳到 RGB 转换)。棋盘图案仍然存在。
有损 jpg 也对这个过程有很大贡献。您应该首先可以访问原始图像。
从那些特定的图像中,我首先尝试使用边缘检测过滤器(Sobel 水平和垂直)来制作一个掩码,在平坦区域的一些中值/局部直方图均衡之间进行选择,并对边缘应用一些棋盘减少过滤器。关键是,可能没有一个过滤器能够同时处理 jpeg 振铃伪影和锯齿状边缘。那么真正的问题是:应该处理哪些其他类型的图像?
来自评论:如果要精确地制作角点,那么解决方案更有可能是搜索特征(具有亚像素分辨率的角点)并从一组点映射到另一组图像的角点,然后搜索将这些集合相互转换的最佳仿射变换矩阵。有了这个矩阵,一个人就可以对另一张图像进行重新采样。
幸运的是,人们可以用亚像素分辨率估计运动矢量,而无需蛮力搜索所有可能的亚像素位置:在计算匹配滤波器时,可以获得精确匹配的潜在候选者的局部最大值。但这还不是全部。可以通过研究附近像素中的匹配滤波器输出来尝试计算更精确的峰值位置近似值。对于精确匹配,输出应该是对称的。否则,匹配滤波器的“能量”会偏向次佳位置。(二次多项式拟合+找到最大值可以工作。)
仔细观察这些图像,我必须同意@Aki Suihkonen。在我看来,主要的噪音来自 jpeg 压缩,这会导致尖锐的边缘“响起”。我会尝试在图像上使用“去斑”类型的过滤器,看看这是否会有所不同。可以在此链接中找到一些可以帮助您实现此功能的信息。
以更快速和肮脏的方式,您应用许多标准工具之一,例如,假设图像是和:a
b
(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]);
如果您的图像应该是黑白的,但您以灰度捕获它们,则可能会因噪声而有所不同。您可以通过定义阈值将图像转换为黑白,值小于该阈值的任何像素都应分配为 0,大于该阈值的任何像素应分配为 1,或者无论您的灰度范围是什么(可能是 255)。假设您的图像是I
,假设您的灰度图像级别是从 0 到 255,使其成为黑白,假设您选择的阈值为 100:
ind = find(I < 100);
I(ind) = 0;
ind = find(I >= 100);
I(ind) = 255;
现在你有一张黑白图像,对另一张图像做同样的事情,如果相机和主体移动了,你应该得到非常小的差异。