网站运营每天做的,站群系列服务器做视频网站,做面食的网站,外贸网上营销的途径有哪些目录
一、角点检测
1、什么是角点检测
2、检测流程 1#xff09;输入图像 2#xff09;图像预处理 3#xff09;特征提取 4#xff09;角点检测 5#xff09;角点定位和标记 6#xff09;角点筛选或后处理#xff08;可选#xff09; 7#xff09;输出结果
3、邻域…目录
一、角点检测
1、什么是角点检测
2、检测流程 1输入图像 2图像预处理 3特征提取 4角点检测 5角点定位和标记 6角点筛选或后处理可选 7输出结果
3、邻域
4、案例实现 运行结果
二、特征提取sift
1、什么是特征提取
2、步骤 1数据预处理 2特征选择 3特征提取 4特征表示
3、案例实现 运行结果 一、角点检测
1、什么是角点检测 角点检测是计算机视觉中的一种特征检测方法用于寻找图像中的角点或者具有角点特征的图像区域。角点是指图像中突然改变方向的点即在其周围的不同方向上都有较大的灰度变化。角点具有一些特殊性质如旋转不变性、尺度不变性和光照不变性等因此在图像处理和计算机视觉中具有广泛的应用。 2、检测流程 1输入图像 将待检测的图像作为输入。 2图像预处理 对输入图像进行必要的预处理如灰度化、降噪等以便更好地进行角点检测。 3特征提取 使用角点检测算法对预处理后的图像进行角点特征提取。常见的角点检测算法有Harris角点检测算法、Shi-Tomasi角点检测算法等。 4角点检测 根据所选的角点检测算法计算图像中的每个像素点的角点响应值以判断其是否为角点。具体算法会根据不同的方法而有所差异。 5角点定位和标记 根据角点响应值确定角点的位置并进行标记。可以使用函数或算法来绘制或返回角点的位置信息。 6角点筛选或后处理可选 根据具体需求可以对检测到的角点进行筛选或进行后处理操作如非极大值抑制、阈值过滤等以去除不准确的角点或增强有效的角点。 7输出结果 根据需要可以将检测到的角点的位置信息、图像中绘制的标记或其他相关信息作为输出结果。 3、邻域 在角点检测中邻域指的是一个中心像素周围的一组像素点。在检测角点时我们需要考虑中心像素周围的像素点的特征如灰度变化梯度等。这些特征的计算通常需要使用邻域内的像素信息。 邻域的大小在角点检测中非常重要它决定了我们考虑的像素点的数量。通常邻域的大小取决于具体的角点检测算法和应用场景。较大的邻域可以捕获更多的细节信息但会增加计算的复杂性较小的邻域可以加快计算速度但可能会导致角点检测结果不准确。 4、案例实现
# 角点指图像中局部区城与周围区域有较大灰度变化的点或像素。
# cornerHarris(img,blockSize, ksize, kl, dst[, borderType]])- dst
# img:输入图像。
# blocksize:角点检测中要考虑的领域大小。
# ksize:Sobel求导中使用的窗口大小。
# k:Harris角点检测方程中的自由参数,取值参数为[0.04,0.06]。
# dst:返回numpy.ndarray对象,大小和src相同,值越大,对应像素点是角的機率越高img cv2.imread(huanghelou.png) # 导入图像
cv2.imshow(img1,img)
cv2.waitKey(0)
gray cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) # 转变为灰度图
dst cv2.cornerHarris(gray,4,3, 0.04) # 输入图像gray必须是灰度图4表示领域的大小为2*2
# 3为计算梯度图的Sobel算子的孔径大小0.04表示角点检查灵敏度越小检测到的角点越多
# dst为与输入图像相同大小的矩阵
# Sobel算子是一种常用的边缘检测算子# 标记检测到的角点
img[dst 0.05 * dst.max()] [0,255,0] # 将原图像中灰度值大于0.05*dst.max()的值标记为绿色
# 这里通过对角点响应进行阈值处理标记出检测到的角点。
# 0.05 * dst.max() 是一个阈值大于这个值的像素点会被标记为绿色。
cv2.imshow(img,img)
cv2.waitKey(0) 运行结果 二、特征提取sift
1、什么是特征提取 特征提取是指从原始数据中提取出具有辨识性和代表性的特征用于描述和表示数据的关键信息。在计算机视觉、模式识别和机器学习等领域特征提取是一项关键的任务因为原始数据通常含有大量冗余和噪声通过提取特征可以减少数据的维度、去除冗余信息从而更好地捕捉数据的潜在模式和结构。 特征可以是数据的某种可测量的属性比如颜色、纹理、形状、梯度等。特征提取的目标是选择和计算这些特征使其能够表达出不同类别或实例之间的差异和相似性。 SIFI尺度不变特征转换是一种机器视觉的算法用来侦测与描述影像中的局部性特征它在空间尺度中寻找极值点并提取出其位置、尺度、旋转不变数。
2、步骤 1数据预处理 对原始数据进行预处理如去噪、归一化、平滑等。 2特征选择 从原始数据中选择合适的特征子集以避免冗余和噪声。 3特征提取 根据领域知识或数学算法计算和提取数据中的特征。 4特征表示 将提取到的特征表示成一组数值、向量或其他形式便于计算机处理和分析。 特征提取的好坏对于后续的数据分析、模型训练和模式识别任务至关重要。一个好的特征应该能够具有辨别性、区分不同类别或实例并且具有鲁棒性对于数据的变形和噪声有一定的容忍度。 3、案例实现
import numpy as npman cv2.imread(man.png)
cv2.imshow(man,man)
cv2.waitKey(0)
man_gray cv2.cvtColor(man,cv2.COLOR_BGR2GRAY)
sift cv2.SIFT_create() # 创建一个sift对象
kp sift.detect(man_gray) # 在灰度图中查找关键点
for x in kp: # 打印所有关键点坐标print(x.pt)# drawKeypoints(image,keypoints,outImage, colorNone, flagsNone)
# image:原始图片
# keypoints:从原图中获得的关键点这也是画图时所用到的数据
# outputimage:输出图像可以是原始图片,也可以是None
# color:颜色设置过修改(b,g,r)的值,更改画笔的颜色b蓝色g绿色r红色。
# flags:绘图功能尚标识设置
# 绘制关键点在原始图像上绘制点kpNone表示不使用绘制匹配项的图像cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS指定绘制关键点的样式
man_sift cv2.drawKeypoints(man,kp,None,flagscv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)cv2.imshow(man sift,man_sift) # 展示绘制了关键信息的图片
cv2.waitKey(0)# 使用sift.compute()计算关键点描述符,方便后期的特征匹配
keypoints,des sift.compute(man,kp) # man原始图像kp检测到的关键点坐标的列表,des是一个numpy数组包含所有关键点的描述符
print(np.array(keypoints).shape,des.shape) # 打印关键点的个数以及关键点的描述符矩阵的形状
# 输出关键点的形状和描述符的形状。
# np.array(keypoints).shape 表示关键点的数量和形状。 运行结果