代码语言:javascript复制
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)#将彩色图片转换为灰度图片
blobs_doh=blob_doh(im_gray,max_sigma=30,threshold=0.005)#DoH斑点检测
blobs_doh[:, 2]=sqrt(2)*blobs_doh[:,2]
blobs_list=[blobs_doh]
colors=['red']
titles=['Determinant of Hessian']
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()
算法:DoH斑点检测是通过计算图像黑塞行列式矩阵中的极大值来检测斑点。斑点的大小对检测速度没有任何影响。该方法既能检测到深色背景上的亮斑,也能检测到浅色背景上的暗斑,但不能准确地检测到小亮斑。理论上,与LOG相比,DOH对细长结构的斑点有较好的抑制作用。
文献:Gao, J. , Gu, Y. , & Zhu, P. . (2021). Feature tracking for target identification in acoustic image sequences. Complexity, 2021, 1-11.