最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python 實(shí)現(xiàn)Harris角點(diǎn)檢測(cè)算法

 更新時(shí)間:2020年12月11日 10:23:30   作者:我堅(jiān)信陽光燦爛  
這篇文章主要介紹了python 實(shí)現(xiàn)Harris角點(diǎn)檢測(cè)算法,幫助大家更好的利用python處理圖像,感興趣的朋友可以了解下

算法流程:

  1. 將圖像轉(zhuǎn)換為灰度圖像
  2. 利用Sobel濾波器求出 海森矩陣 (Hessian matrix) :

  • 將高斯濾波器分別作用于Ix²、Iy²、IxIy
  • 計(jì)算每個(gè)像素的 R= det(H) - k(trace(H))²。det(H)表示矩陣H的行列式,trace表示矩陣H的跡。通常k的取值范圍為[0.04,0.16]。
  • 滿足 R>=max(R) * th 的像素點(diǎn)即為角點(diǎn)。th常取0.1。

Harris算法實(shí)現(xiàn):

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()

實(shí)驗(yàn)結(jié)果:

原圖:

Harris角點(diǎn)檢測(cè)算法檢測(cè)結(jié)果:

以上就是python 實(shí)現(xiàn)Harris角點(diǎn)檢測(cè)算法的詳細(xì)內(nèi)容,更多關(guān)于python Harris角點(diǎn)檢測(cè)算法的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Pytorch實(shí)現(xiàn)ResNet網(wǎng)絡(luò)之Residual Block殘差塊

    Pytorch實(shí)現(xiàn)ResNet網(wǎng)絡(luò)之Residual Block殘差塊

    這篇文章主要為大家介紹了Pytorch實(shí)現(xiàn)ResNet網(wǎng)絡(luò)之Residual Block殘差塊實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • Windows下pycharm安裝第三方庫失敗(通用解決方案)

    Windows下pycharm安裝第三方庫失敗(通用解決方案)

    這篇文章主要介紹了Windows下pycharm安裝第三方庫失敗(通用解決方案),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • python繼承threading.Thread實(shí)現(xiàn)有返回值的子類實(shí)例

    python繼承threading.Thread實(shí)現(xiàn)有返回值的子類實(shí)例

    這篇文章主要介紹了python繼承threading.Thread實(shí)現(xiàn)有返回值的子類實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • python中array數(shù)組添加一行或一列數(shù)據(jù)的具體實(shí)現(xiàn)

    python中array數(shù)組添加一行或一列數(shù)據(jù)的具體實(shí)現(xiàn)

    這篇文章主要給大家介紹了關(guān)于python中array數(shù)組添加一行或一列數(shù)據(jù)的具體實(shí)現(xiàn),最近經(jīng)常使用到數(shù)組方法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-09-09
  • python中numpy.dot()計(jì)算矩陣相乘

    python中numpy.dot()計(jì)算矩陣相乘

    本文主要介紹了python中numpy.dot()計(jì)算矩陣相乘,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • Python連接MySQL數(shù)據(jù)庫并查找表信息

    Python連接MySQL數(shù)據(jù)庫并查找表信息

    本文主要介紹了Python連接MySQL數(shù)據(jù)庫并查找表信息,通過使用Python中的MySQL Connector模塊,連接到MySQL服務(wù)器并執(zhí)行SQL查詢語句,可以獲取表的結(jié)構(gòu)、列信息、行數(shù)據(jù)等,感興趣的可以了解一下
    2023-08-08
  • python更新列表的方法

    python更新列表的方法

    這篇文章主要介紹了python更新列表的方法,實(shí)例分析了Python列表賦值的相關(guān)技巧,需要的朋友可以參考下
    2015-07-07
  • Python獲取某一進(jìn)程的CPU利用率的方法詳解

    Python獲取某一進(jìn)程的CPU利用率的方法詳解

    這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)獲取某一進(jìn)程的CPU利用率,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-02-02
  • 基于Python實(shí)現(xiàn)面向?qū)ο蟀鎸W(xué)生管理系統(tǒng)

    基于Python實(shí)現(xiàn)面向?qū)ο蟀鎸W(xué)生管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了如何利用python實(shí)現(xiàn)學(xué)生管理系統(tǒng)(面向?qū)ο蟀妫闹惺纠a介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • 用Pytorch訓(xùn)練CNN(數(shù)據(jù)集MNIST,使用GPU的方法)

    用Pytorch訓(xùn)練CNN(數(shù)據(jù)集MNIST,使用GPU的方法)

    今天小編就為大家分享一篇用Pytorch訓(xùn)練CNN(數(shù)據(jù)集MNIST,使用GPU的方法),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08

最新評(píng)論

呼伦贝尔市| 托克托县| 保山市| 建宁县| 山西省| 扶沟县| 昌都县| 抚宁县| 镇江市| 霞浦县| 诸城市| 绥江县| 富顺县| 张北县| 馆陶县| 阳原县| 承德市| 永平县| 麻栗坡县| 嘉黎县| 阿勒泰市| 启东市| 新河县| 渭源县| 循化| 宁德市| 郸城县| 闸北区| 天全县| 郓城县| 禄劝| 宜春市| 屏边| 衢州市| 陆良县| 敦化市| 西青区| 剑阁县| 嘉峪关市| 周宁县| 滁州市|