对于我的学士论文,我需要分析在海洋中拍摄的图像来计算和测量水粒子的大小。
我的问题: 除了想要的水颗粒外,图像在整个图像中显示六角形斑块: - 不同的尺寸 - 不规则的形状 - 不同的灰度值
(下面的示例图片!)
很明显,这些贴片会伪造我关于粒子大小和数量的图像分析。 因此,需要以某种方式检测和删除此补丁。
由于这只是我论文中工作的一小部分,我不想花太多时间在其中,并且已经尝试过经典的方法,如:(imageJ)
更复杂和耗时的解决方案是使用实现的库(例如matlab或opencv)来检测描述形状的点。 但到目前为止,我找不到适合我任务的代码。
你们中是否有人创造了我可以用于我的任务或任何其他想法的代码?
你也可以看到很多不同深度的六边形斑块。 像素值较大的小点是想要的粒子!
答案 0 :(得分:0)
图像处理是一个非常复杂的领域,因此没有严格的规则。
但如果是我,我会'面膜'图片。这涉及定义您要保留或删除的像素' Mask'。然后,您可以递归扫描图像上的蒙版,并将蒙版与所选的图像部分进行比较。然后,如果符合您的标准,则选择或删除该部分(取决于您的方法)。 标准的一个这样的例子是针对似然函数的加权的空间和灰度误差(例如,卡方,平均误差等)或者您定义不确定性的正态分布。
一些值得思考的东西
答案 1 :(得分:0)
也许您可以尝试使用霍夫变换:
https://en.wikipedia.org/wiki/Hough_transform
Matlab具有内置函数hough
,可实现此功能,但仅适用于行。也许您可以从此开始,然后更改它以识别六边形。