神剑山庄资源网 Design By www.hcban.com
算法流程:
- 将图像转换为灰度图像
- 利用Sobel滤波器求出 海森矩阵 (Hessian matrix) :
- 将高斯滤波器分别作用于Ix²、Iy²、IxIy
- 计算每个像素的 R= det(H) - k(trace(H))²。det(H)表示矩阵H的行列式,trace表示矩阵H的迹。通常k的取值范围为[0.04,0.16]。
- 满足 R>=max(R) * th 的像素点即为角点。th常取0.1。
Harris算法实现:
import cv2 as cv import numpy as np import matplotlib.pyplot as plt # Harris corner detection def Harris_corner(img): ## Grayscale def BGR2GRAY(img): gray = 0.2126 * img[..., 2] + 0.7152 * img[..., 1] + 0.0722 * img[..., 0] gray = gray.astype(np.uint8) return gray ## Sobel def Sobel_filtering(gray): # get shape H, W = gray.shape # sobel kernel sobely = np.array(((1, 2, 1), (0, 0, 0), (-1, -2, -1)), dtype=np.float32) sobelx = np.array(((1, 0, -1), (2, 0, -2), (1, 0, -1)), dtype=np.float32) # padding tmp = np.pad(gray, (1, 1), 'edge') # prepare Ix = np.zeros_like(gray, dtype=np.float32) Iy = np.zeros_like(gray, dtype=np.float32) # get differential for y in range(H): for x in range(W): Ix[y, x] = np.mean(tmp[y : y + 3, x : x + 3] * sobelx) Iy[y, x] = np.mean(tmp[y : y + 3, x : x + 3] * sobely) Ix2 = Ix ** 2 Iy2 = Iy ** 2 Ixy = Ix * Iy return Ix2, Iy2, Ixy # gaussian filtering def gaussian_filtering(I, K_size=3, sigma=3): # get shape H, W = I.shape ## gaussian I_t = np.pad(I, (K_size // 2, K_size // 2), 'edge') # gaussian kernel K = np.zeros((K_size, K_size), dtype=np.float) for x in range(K_size): for y in range(K_size): _x = x - K_size // 2 _y = y - K_size // 2 K[y, x] = np.exp( -(_x ** 2 + _y ** 2) / (2 * (sigma ** 2))) K /= (sigma * np.sqrt(2 * np.pi)) K /= K.sum() # filtering for y in range(H): for x in range(W): I[y,x] = np.sum(I_t[y : y + K_size, x : x + K_size] * K) return I # corner detect def corner_detect(gray, Ix2, Iy2, Ixy, k=0.04, th=0.1): # prepare output image out = np.array((gray, gray, gray)) out = np.transpose(out, (1,2,0)) # get R R = (Ix2 * Iy2 - Ixy ** 2) - k * ((Ix2 + Iy2) ** 2) # detect corner out[R >= np.max(R) * th] = [255, 0, 0] out = out.astype(np.uint8) return out # 1. grayscale gray = BGR2GRAY(img) # 2. get difference image Ix2, Iy2, Ixy = Sobel_filtering(gray) # 3. gaussian filtering Ix2 = gaussian_filtering(Ix2, K_size=3, sigma=3) Iy2 = gaussian_filtering(Iy2, K_size=3, sigma=3) Ixy = gaussian_filtering(Ixy, K_size=3, sigma=3) # 4. corner detect out = corner_detect(gray, Ix2, Iy2, Ixy) return out # Read image img = cv.imread("../qiqiao.jpg").astype(np.float32) # Harris corner detection out = Harris_corner(img) cv.imwrite("out.jpg", out) cv.imshow("result", out) cv.waitKey(0) cv.destroyAllWindows()
实验结果:
原图:
Harris角点检测算法检测结果:
以上就是python 实现Harris角点检测算法的详细内容,更多关于python Harris角点检测算法的资料请关注其它相关文章!
神剑山庄资源网 Design By www.hcban.com
神剑山庄资源网
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
神剑山庄资源网 Design By www.hcban.com
暂无python 实现Harris角点检测算法的评论...
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
2024年11月17日
2024年11月17日
- 中国武警男声合唱团《辉煌之声1天路》[DTS-WAV分轨]
- 紫薇《旧曲新韵》[320K/MP3][175.29MB]
- 紫薇《旧曲新韵》[FLAC/分轨][550.18MB]
- 周深《反深代词》[先听版][320K/MP3][72.71MB]
- 李佳薇.2024-会发光的【黑籁音乐】【FLAC分轨】
- 后弦.2012-很有爱【天浩盛世】【WAV+CUE】
- 林俊吉.2012-将你惜命命【美华】【WAV+CUE】
- 晓雅《分享》DTS-WAV
- 黑鸭子2008-飞歌[首版][WAV+CUE]
- 黄乙玲1989-水泼落地难收回[日本天龙版][WAV+CUE]
- 周深《反深代词》[先听版][FLAC/分轨][310.97MB]
- 姜育恒1984《什么时候·串起又散落》台湾复刻版[WAV+CUE][1G]
- 那英《如今》引进版[WAV+CUE][1G]
- 蔡幸娟.1991-真的让我爱你吗【飞碟】【WAV+CUE】
- 群星.2024-好团圆电视剧原声带【TME】【FLAC分轨】