python斑点检测

举报
风吹稻花香 发表于 2021/06/06 00:57:56 2021/06/06
【摘要】 对于简单的场景管用,复杂的场景效果不明显。    方法一:基于LoG算子的圆斑检测。 这是常用的斑点检测方法,可参考http://doc.okbase.net/ronny/archive/102540.html。 此方法的问题是,图像中不是圆形的斑点也会检测出来,还需要进一步的判断,这使得算法的效率不高。   /* SimpleBlo...

对于简单的场景管用,复杂的场景效果不明显。

 

 方法一:基于LoG算子的圆斑检测。

这是常用的斑点检测方法,可参考http://doc.okbase.net/ronny/archive/102540.html。

此方法的问题是,图像中不是圆形的斑点也会检测出来,还需要进一步的判断,这使得算法的效率不高。

 

/* SimpleBlobDetector::Params params; //阈值控制

params.minThreshold = 10; params.maxThreshold = 200; //像素面积大小控制

params.filterByArea = true; params.minArea = 1000; //形状(凸)

params.filterByCircularity = false; params.minCircularity = 0.7; //形状(凹)

params.filterByConvexity = true; params.minConvexity = 0.9; //形状(园)

params.filterByInertia = false; params.minInertiaRatio = 0.5; */

 

LoG检测

利用高斯拉普拉斯LOG算子检测图像斑点较DoH,Harris和其它点检测方法稳定性更好,抗图像中噪声的能力更强 

 


  
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. # Standard imports
  4. import os
  5. import cv2
  6. import numpy as np
  7. path=r"Images/"
  8. files=os.listdir(path)
  9. for file in files:
  10. # Read image
  11. im = cv2.imread(path+file)
  12. im_o = cv2.resize(im, (800,600))
  13. im_gauss = cv2.cvtColor(im_o, cv2.COLOR_RGB2GRAY)
  14. im_gauss = cv2.GaussianBlur(im_gauss, (3, 3), 0)
  15. ret, im = cv2.threshold(im_gauss, 30, 255, 0)
  16. cv2.imshow("o", im)
  17. # Setup SimpleBlobDetector parameters.
  18. params = cv2.SimpleBlobDetector_Params()
  19. # Change thresholds
  20. params.minThreshold = 10
  21. params.maxThreshold = 200
  22. # Filter by Area.
  23. params.filterByArea = True
  24. params.minArea = 16
  25. # Filter by Circularity
  26. params.filterByCircularity = True
  27. params.minCircularity = 0.3
  28. # Filter by Convexity
  29. params.filterByConvexity = True
  30. params.minConvexity = 0.57
  31. # Filter by Inertia
  32. params.filterByInertia = True
  33. params.minInertiaRatio = 0.01
  34. # Create a detector with the parameters
  35. ver = (cv2.__version__).split('.')
  36. if int(ver[0]) < 3:
  37. detector = cv2.SimpleBlobDetector(params)
  38. else:
  39. detector = cv2.SimpleBlobDetector_create(params)
  40. # Detect blobs.
  41. keypoints = detector.detect(im)
  42. # Draw detected blobs as red circles.
  43. # cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS ensures
  44. # the size of the circle corresponds to the size of blob
  45. im_with_keypoints = cv2.drawKeypoints(im_o, keypoints, np.array([]), (0, 0, 255),cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
  46. # Show blobs
  47. cv2.imshow("Keypoints", im_with_keypoints)
  48. cv2.waitKey(0)

 

文章来源: blog.csdn.net,作者:网奇,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/jacke121/article/details/96865498

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。