import cv2
from numpy import sqrt
from skimage.color import rgb2gray
from matplotlib import pylab as pylab
from skimage.feature import blob_dog, blob_log, blob_doh
im=cv2.imread('C:/Users/xpp/Desktop/Lena.png')#原始图像
im_gray=rgb2gray(im)#将彩色图片转换为灰度图片
dog_blobs=blob_dog(im_gray,max_sigma=30,threshold=0.1)#DoG斑点检测
dog_blobs[:,2]=sqrt(2)*dog_blobs[:,2]
blobs_list=[dog_blobs]
colors=['lime']
titles=['Difference of Gaussian']
sequence=zip(blobs_list,colors,titles)
fig,axes=pylab.subplots(2,2,figsize=(20, 20),sharex=True,sharey=True)
axes=axes.ravel()
axes[0].imshow(im,interpolation='nearest')
axes[0].set_title('original image',size=30),axes[0].set_axis_off()
for idx, (blobs,color,title) in enumerate(sequence):
axes[idx+1].imshow(im,interpolation='nearest')
axes[idx+1].set_title('Blobs with'+title,size=30)
for blob in blobs:
y,x,row=blob
col=pylab.Circle((x,y),row,color=color,linewidth=2,fill=False)
axes[idx+1].add_patch(col),axes[idx+1].set_axis_off()
pylab.tight_layout()
pylab.show()
算法:DoG斑点检测类似于LoG。DoG在每层金字塔多做一次高斯操作,但通过减法取代LoG核的计算过程,显著减少了运算次数,大大节省了运算时间。
本文分享自 图像处理与模式识别研究所 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!