Matlab 噪声图像中小斑点的检测技术
我正试图编写一个程序,使用计算机视觉技术来检测(和跟踪)非常嘈杂的图像流中的微小斑点。图像流来自双X射线成像设置,该设置输出左视图和右视图(由于准直不同,因此大小不同)。我的数据有两种类型:一组图像没有太大的噪声,我只是用它来尝试不同的技术,另一组噪声更大,这就是最后需要检测的地方。图像流的频率为60 Hz。这是来自X射线成像仪的原始图像示例: 这里是一些裁剪出来的感兴趣区域的样本。需要检测的斑点是图像中心附近的小黑点 起初,我在OpenCV中使用了一种简单的轮廓/斑点检测技术,这并没有太大帮助。最后,我转向了一些技术,比如使用形态学算子“打开”图像,然后执行拉普拉斯高斯斑点检测来检测感兴趣的区域。对于低噪声版本的图像,这给了我更好的结果,但对于高噪声版本,这就失败了:给了我太多的误报。这是一个低噪声图像的结果(请注意,输入图像是反转的) 我目前在MATLAB中基于日志的方法的代码如下所示:Matlab 噪声图像中小斑点的检测技术,matlab,opencv,image-processing,computer-vision,Matlab,Opencv,Image Processing,Computer Vision,我正试图编写一个程序,使用计算机视觉技术来检测(和跟踪)非常嘈杂的图像流中的微小斑点。图像流来自双X射线成像设置,该设置输出左视图和右视图(由于准直不同,因此大小不同)。我的数据有两种类型:一组图像没有太大的噪声,我只是用它来尝试不同的技术,另一组噪声更大,这就是最后需要检测的地方。图像流的频率为60 Hz。这是来自X射线成像仪的原始图像示例: 这里是一些裁剪出来的感兴趣区域的样本。需要检测的斑点是图像中心附近的小黑点 起初,我在OpenCV中使用了一种简单的轮廓/斑点检测技术,这并没有太大
while ~isDone(videoReader)
frame = step(videoReader);
roi_frame = imcrop(frame, [660 410 120 110]);
I_roi = rgb2gray(roi_frame);
I_roi = imcomplement(I_roi);
I_roi = wiener2(I_roi, [5 5]);
background = imopen(I_roi,strel('disk',3));
I2 = imadjust(I_roi - background);
K = imgaussfilt(I2, 5);
level = graythresh(K);
bw = im2bw(I2);
sigma = 3;
% Filter image with LoG
I = double(bw);
h = fspecial('log',sigma*30,sigma);
Ifilt = -imfilter(I,h);
% Threshold for points of interest
Ifilt(Ifilt < 0.001) = 0;
% Dilate to obtain local maxima
Idil = imdilate(Ifilt,strel('disk',50));
% This is the final image
P = (Ifilt == Idil) .* Ifilt;
while~isDone(视频阅读器)
帧=步进(视频阅读器);
roi_frame=imcrop(frame[660 410 120 110]);
I_roi=rgb2gray(roi_帧);
I_roi=imcomplete(I_roi);
I_-roi=wiener2(I_-roi[5]);
背景=iOpen(I_roi,strel('disk',3));
I2=imadjust(I_roi-背景);
K=imgaussfilt(I2,5);
级别=灰度阈值(K);
bw=im2bw(I2);
西格玛=3;
%使用日志过滤图像
I=双倍(bw);
h=f特殊('log',西格玛*30,西格玛);
Ifilt=-imfilter(I,h);
%兴趣点的阈值
Ifilt(Ifilt<0.001)=0;
%扩张以获得局部极大值
Idil=扩张(Ifilt,strel('disk',50));
%这是最终的图像
P=(Ifilt==Idil)。*Ifilt;
有什么方法可以改进我目前的检测技术,使其适用于背景噪声较大的图像?还是有更适合这种图像的技术 我将采取的方法: -平均背景减法 -积极的高斯平滑(,在我的头顶上,我想你想要sigma大约是你物体最小横截面的一半,但你可能想要摆弄它)基本上目标是在不完全丢失目标物体(基于形状和大小)的情况下尽可能模糊噪声 -边缘检测。如果可能的话,尽量针对对象(基本上,在高斯平滑后观察对象的边缘,并将边缘检测设置为查找宽度和对比度偏移)
-可以考虑在这里运行关闭操作。< /P> -根据大小和形状搜索整个图像中的孤岛(全封闭区域)过滤器
我有一种预感,尽管信噪比非常低,但你的噪声粒度有望大大小于你的对象大小。(如果你的噪音与你的物体具有相同的对比度和大致相同的大小,那么你就沉沦了,需要重新评估你的获得)另一个注意事项是基于您的速度需求。通过了解最后的已知位置和局部搜索,以及了解新目标可以从何处进入图像,可以节省大量的处理成本。相机和场景是否静止,只有斑点在移动?斑点移动的速度有多快,帧速率是多少?为什么图像的大小都不同?由于您的图像是流的一部分,我认为您需要利用它来减少噪音。根据帧速率,我会考虑将帧的最后几秒钟的移动平均值作为基准和最后2-4帧的平均值,然后进行差分,以便消除噪声。如果不了解更多有关设置的信息,很难说。这可能是有用的。。。您可能希望使用更稳健的跟踪方法,例如,您的“目标对象”的大小、形状和/或反射率是否一致?(可变性是什么)您是否也可以发布一张没有任何对象的图片(如果有)?