我有一个图像,如‘1’中所示。我应用了黑森过滤器来得到结果‘2’。我在MatLab中应用了标准过滤器(Stdfilt),得到了如‘3’所示的结果。我希望将这两个结果合并到一个图像中,以便:
我怎么能得到这样的结果呢?原件(1):
黑斯人(2):
标准过滤(3):
最后两个没有加价:
yhived7q1#
您可以从将图像二值化开始。我推荐OpenCV otsu Threshold。如果存在渐变,就很难解决这个问题。图像二值化后,您需要修复抛物线和水平线之间的桥接。我推荐形态侵 eclipse ,但我仍在我自己的项目中试验这一点。之后,可以使用分水岭或DBSCAN使用给定的标记或颜色整体填充每个区域。然后,您可以按像素数过滤出水平线,因为它们将比一条抛物线大得多。如果侵 eclipse +DBSCAN运行不可靠,您可以查看OpenCV的connectedComponents函数。请参见:
otsu
connectedComponents
https://iq.opengenus.org/connected-component-labeling/ https://scikit-learn.org/stable/modules/generated/sklearn.cluster.DBSCAN.html https://docs.opencv.org/4.x/d3/db4/tutorial_py_watershed.html
1条答案
按热度按时间yhived7q1#
您可以从将图像二值化开始。我推荐OpenCV
otsu
Threshold。如果存在渐变,就很难解决这个问题。图像二值化后,您需要修复抛物线和水平线之间的桥接。我推荐形态侵 eclipse ,但我仍在我自己的项目中试验这一点。之后,可以使用分水岭或DBSCAN使用给定的标记或颜色整体填充每个区域。然后,您可以按像素数过滤出水平线,因为它们将比一条抛物线大得多。如果侵 eclipse +DBSCAN运行不可靠,您可以查看OpenCV的connectedComponents
函数。请参见: