¸üÐÂʱ¼ä:2021Äê06ÔÂ03ÈÕ17ʱ50·Ö À´Ô´:ÀÖÓãµç¾º ä¯ÀÀ´ÎÊý:
Harris½Çµã¼ì²âµÄ˼ÏëÊÇͨ¹ýͼÏñµÄ¾Ö²¿µÄС´°¿Ú¹Û²ìͼÏñ£¬½ÇµãµÄÌØÕ÷ÊÇ´°¿ÚÑØÈÎÒâ·½ÏòÒÆ¶¯¶¼»áµ¼ÖÂͼÏñ»Ò¶ÈµÄÃ÷ÏԱ仯£¬ÈçÏÂͼËùʾ£º

½«ÉÏÊö˼Ïëת»»ÎªÊýѧÐÎʽ£¬¼´½«¾Ö²¿´°¿ÚÏò¸÷¸ö·½ÏòÒÆ¶¯²¢¼ÆËãËùÓлҶȲîÒìµÄ×ܺͣ¬±í´ïʽÈçÏ£º
ÆäÖÐÊǾֲ¿´°¿ÚµÄͼÏñ»Ò¶È£¬ÊÇÆ½ÒƺóµÄͼÏñ»Ò¶È£¬ÊÇ´°¿Úº¯Êý£¬¸Ã¿ÉÒÔÊǾØÐδ°¿Ú£¬Ò²¿ÉÒÔÊǶÔÿһ¸öÏñËØ¸³Óè²»Í¬È¨ÖØµÄ¸ß˹´°¿Ú£¬ÈçÏÂËùʾ£º

½Çµã¼ì²âÖÐʹµÄÖµ×î´ó¡£ÀûÓÃÒ»½×Ì©ÀÕÕ¹¿ªÓУº
ÆäÖÐºÍ ÊÇÑØxºÍy·½ÏòµÄµ¼Êý£¬¿ÉÓÃsobelËã×Ó¼ÆËã¡£
ÍÆµ¼ÈçÏ£º

¾ØÕó¾ö¶¨Á˵Äȡֵ£¬ÏÂÃæÎÒÃÇÀûÓÃÀ´Çó½Çµã£¬ÊǺ͵Ķþ´ÎÏÊý£¬¿ÉÒÔ±íʾ³ÉÍÖÔ²µÄÐÎ×´£¬ÍÖÔ²µÄ³¤¶Ì°ëÖáÓɵÄÌØÕ÷ÖµºÍ¾ö¶¨£¬·½ÏòÓÉÌØÕ÷ʸÁ¿¾ö¶¨£¬ÈçÏÂͼËùʾ£º

ÍÖÔ²º¯ÊýÌØÕ÷ÖµÓëͼÏñÖеĽǵ㡢ֱÏߣ¨±ßÔµ£©ºÍÆ½ÃæÖ®¼äµÄ¹ØÏµÈçÏÂͼËùʾ¡£

¹²¿É·ÖΪÈýÖÖÇé¿ö£º
Harris¸ø³öµÄ½Çµã¼ÆËã·½·¨²¢²»ÐèÒª¼ÆËã¾ßÌåµÄÌØÕ÷Öµ£¬¶øÊǼÆËãÒ»¸ö½ÇµãÏìÓ¦ÖµÀ´ÅжϽǵ㡣µÄ¼ÆË㹫ʽΪ£º
ʽÖУ¬detMΪ¾ØÕóMµÄÐÐÁÐʽ£»traceMΪ¾ØÕóMµÄ¼££»αΪ³£Êý£¬È¡Öµ·¶Î§Îª0.04~0.06¡£ÊÂʵÉÏ£¬ÌØÕ÷ÊÇÒþº¬ÔÚdetMºÍtraceMÖУ¬ÒòΪ:

ÄÇÎÒÃÇÔõôÅжϽǵãÄØ£¿ÈçÏÂͼËùʾ£º

ÔÚOpenCVÖÐʵÏÖHariis¼ì²âʹÓõÄAPIÊÇ£º
dst=cv.cornerHarris(src, blockSize, ksize, k)
²ÎÊý£º
img£ºÊý¾ÝÀàÐÍΪ ?oat32 µÄÊäÈëͼÏñ¡£
blockSize£º½Çµã¼ì²âÖÐÒª¿¼ÂǵÄÁÚÓò´óС¡£
ksize£ºsobelÇóµ¼Ê¹Óõĺ˴óС
k £º½Çµã¼ì²â·½³ÌÖеÄ×ÔÓɲÎÊý£¬È¡Öµ²ÎÊýΪ [0.04£¬0.06].
ʾÀý£º
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
# 1 ¶ÁȡͼÏñ£¬²¢×ª»»³É»Ò¶ÈͼÏñ
img = cv.imread('./image/chessboard.jpg')
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
# 2 ½Çµã¼ì²â
# 2.1 ÊäÈëͼÏñ±ØÐëÊÇ float32
gray = np.float32(gray)
# 2.2 ×îºóÒ»¸ö²ÎÊýÔÚ 0.04 µ½ 0.05 Ö®¼ä
dst = cv.cornerHarris(gray,2,3,0.04)
# 3 ÉèÖÃãÐÖµ£¬½«½Çµã»æÖƳöÀ´£¬ãÐÖµ¸ù¾ÝͼÏñ½øÐÐÑ¡Ôñ
img[dst>0.001*dst.max()] = [0,0,255]
# 4 ͼÏñÏÔʾ
plt.figure(figsize=(10,8),dpi=100)
plt.imshow(img[:,:,::-1]),plt.title('Harris½Çµã¼ì²â')
plt.xticks([]), plt.yticks([])
plt.show()
½á¹ûÈçÏ£º

Harris½Çµã¼ì²âµÄÓÅȱµã£º
Óŵ㣺
ȱµã£º
±±¾©Ð£Çø