基于OpenCV的小噪声图像特征检测

基于OpenCV的小噪声图像特征检测,opencv,image-processing,image-recognition,edge-detection,noise-reduction,Opencv,Image Processing,Image Recognition,Edge Detection,Noise Reduction,我有一张图像,既嘈杂又小(相关部分是381) × 这些特征非常微妙 源图像和裁剪的相关区域也位于此处: 任务是使用Python计算相关区域内的白色点的数量,但我很乐意只隔离区域内较亮的点和线,并移除背景结构(在本例中为单元格) 使用OpenCV,我尝试了直方图均衡化(破坏细节),查找轮廓(不起作用),使用颜色范围(颜色太近?) 对其他尝试的事情有什么建议或指导吗?我不相信我能获得更高分辨率的图像,所以这个任务是否可能使用相当困难的源代码?(这不是Python的答案,因为我从未使用过Python

我有一张图像,既嘈杂又小(相关部分是381) × 这些特征非常微妙

源图像和裁剪的相关区域也位于此处:

任务是使用Python计算相关区域内的白色点的数量,但我很乐意只隔离区域内较亮的点和线,并移除背景结构(在本例中为单元格)

使用OpenCV,我尝试了直方图均衡化(破坏细节),查找轮廓(不起作用),使用颜色范围(颜色太近?)

对其他尝试的事情有什么建议或指导吗?我不相信我能获得更高分辨率的图像,所以这个任务是否可能使用相当困难的源代码?

(这不是Python的答案,因为我从未使用过Python/OpenCV绑定。下面的图像是使用Mathematica创建的。但我只使用了基本的图像处理函数,所以您应该能够自己在Python中实现它。)

在图像处理中,一个非常普遍的“窍门”是考虑删除你正在寻找的东西,而不是实际寻找它。因为通常,移除它要比找到它容易得多。例如,您可以对其应用a或a:

这些过滤器有效地去除了比过滤器大小小的细节,并使粗糙的结构或多或少保持不变。因此,您可以从原始图像中提取差异,并查找局部最大值:


(您必须使用不同的“细节删除过滤器”和过滤器大小。无法判断哪一种过滤器仅适用于一张图像。)

我建议您研究一下。这可能有助于解决“破坏细节”问题。OpenCV有一个实现,但它没有文档记录(遗憾的是)。纯粹是天才。我盯着那间牢房看了一个小时,试图想出一种方法来获取圆点,却从未想过要获取背景!我将在OpenCV中尝试此过程。非常感谢你@妮基,你能把注解的字体调大一点吗?我几乎看不懂。你申请了哪一个来获得红点?@kkuilla:你可以在一个单独的选项卡中打开图像。(图像以内联方式向下采样)。我使用了红色十字的中间结果-但是打开/高斯的结果在质量上看起来很相似。我恐怕无法打开新选项卡。不知道为什么。您可以将字体大小设置为非常大的大小,如36或48。然后,当进行下采样时,它看起来是正常的。无论如何,这是一个很好的答案+1@PFM:实际上,我只是使用了
ImageData
-
,也就是说,我将图像转换成一个二维数组,并用它进行了运算。我猜Python中的等效方法是将PIL图像转换为NumPy数组。