Python: scikit-image Blob detection
来源:互联网 发布:公司网络管理 编辑:程序博客网 时间:2024/06/06 20:23
这个用例主要介绍利用三种算法对含有blob的图像进行检测,blob 或者叫斑点,就是在一幅图像上,暗背景上的亮区域,或者亮背景上的暗区域,都可以称为blob。主要利用blob与背景之间的对比度来进行检测。这个用例介绍了三种算法;
Laplacian of Gaussian (LoG)
这是速度最慢,但是最准确的一种算法,简单来说,就是对一幅图先进行一系列不同尺度的高斯滤波,然后对滤波后的图像做Laplacian运算,将所有的图像进行叠加,局部最大值就是所要检测的blob,这个算法对于大的blob检测会很慢,还有就是该算法适合于检测暗背景下的亮blob。
Difference of Gaussian (DoG)
这是LoG算法的一种快速近似,对图像进行高斯滤波之后,不做Laplacian运算,直接做减法,相减后的图做叠加,找到局部最大值,这个算法的缺陷与LoG类似。
Determinant of Hessian (DoH)
这是最快的一种算法,不需要做多尺度的高斯滤波,运算速度自然提升很多,这个算法对暗背景上的亮blob或者亮背景上的暗blob都能检测。缺点是小尺寸的blob检测不准确。
P.S. LoG 和 DoG 如果想检测亮背景上的暗blob,可以将图像做反相,这样亮背景就变成了暗背景,而暗blob就变成了亮blob,然后就可以用这两个算法了,检测完之后再反回来就好了。
from matplotlib import pyplot as pltfrom skimage import datafrom skimage.feature import blob_dog, blob_log, blob_dohfrom math import sqrtfrom skimage.color import rgb2grayimage = data.hubble_deep_field()[0:500, 0:500]image_gray = rgb2gray(image)plt.imshow(image)blobs_log = blob_log(image_gray, max_sigma=30, num_sigma=10, threshold=.1)# Compute radii in the 3rd column.blobs_log[:, 2] = blobs_log[:, 2] * sqrt(2)blobs_dog = blob_dog(image_gray, max_sigma=30, threshold=.1)blobs_dog[:, 2] = blobs_dog[:, 2] * sqrt(2)blobs_doh = blob_doh(image_gray, max_sigma=30, threshold=.01)blobs_list = [blobs_log, blobs_dog, blobs_doh]colors = ['yellow', 'lime', 'red']titles = ['Laplacian of Gaussian', 'Difference of Gaussian', 'Determinant of Hessian']sequence = zip(blobs_list, colors, titles)fig,axes = plt.subplots(1, 3, sharex=True, sharey=True, subplot_kw={'adjustable':'box-forced'})axes = axes.ravel()for blobs, color, title in sequence: ax = axes[0] axes = axes[1:] ax.set_title(title) ax.imshow(image, interpolation='nearest') for blob in blobs: y, x, r = blob c = plt.Circle((x, y), r, color=color, linewidth=2, fill=False) ax.add_patch(c)plt.show()
参考来源: http://scikit-image.org/docs/dev/auto_examples/
原图:
效果图:
0 0
- Python: scikit-image Blob detection
- python scikit-image
- python: scikit-image数字图像处理
- Python: scikit-image binary descriptor
- Python: scikit-image 彩色图像滤波
- Python: scikit-image 图像的基本操作
- Python: scikit-image canny 边缘检测
- Image detection
- scikit-image
- Python: scikit-image gamma and log 对比度调整
- python : 安装scikit-image error:no lapack/blas resources found
- Near Duplicate Image Detection
- image object detection
- 发现scikit-image
- scikit-image 图像处理
- scikit-image 图像处理
- Python3-Scikit-image
- OpenCV vs scikit-image
- 小小一个程序员自述
- Xcode7 Cocoapods 插件用法
- 浏览器分析模拟登陆过程
- 开发语言选择
- http Cookie
- Python: scikit-image Blob detection
- 为什么您公司的工作周报制度,形同虚设?
- java socket UDP 网络发现
- 金钱兑换问题 动态规划 打印兑换后的硬币
- jquery事件对象属性
- 【算法】基数排序
- String 与 常量池
- osgearth_package工具使用
- 用 eventfd 在线程之间通信