ÀÖÓãµç¾º



½ÌÓýÐÐÒµA¹ÉIPOµÚÒ»¹É£¨¹ÉƱ´úÂë 003032£©

È«¹ú×Éѯ/ͶËßÈÈÏߣº400-618-4000

Harris½Çµã¼ì²âÔ­Àí¡¾OpenCV½Ì³Ì¡¿

¸üÐÂʱ¼ä:2021Äê06ÔÂ03ÈÕ17ʱ50·Ö À´Ô´:ÀÖÓãµç¾º ä¯ÀÀ´ÎÊý:

1. Ô­Àí

Harris½Çµã¼ì²âµÄ˼ÏëÊÇͨ¹ýͼÏñµÄ¾Ö²¿µÄС´°¿Ú¹Û²ìͼÏñ£¬½ÇµãµÄÌØÕ÷ÊÇ´°¿ÚÑØÈÎÒâ·½ÏòÒÆ¶¯¶¼»áµ¼ÖÂͼÏñ»Ò¶ÈµÄÃ÷ÏԱ仯£¬ÈçÏÂͼËùʾ£º

Harris½Çµã¼ì²âÔ­Àí

½«ÉÏÊö˼Ïëת»»ÎªÊýѧÐÎʽ£¬¼´½«¾Ö²¿´°¿ÚÏò¸÷¸ö·½ÏòÒÆ¶¯(u,v)(u,v)²¢¼ÆËãËùÓлҶȲîÒìµÄ×ܺÍ£¬±í´ïʽÈçÏ£º

E(u,v)=x,yw(x,y)[I(x+u,y+v)I(x,y)]2 E(u,v)=\sum_{x,y}w(x,y)[I(x+u,y+v)-I(x,y)]^2

ÆäÖÐI(x,y)I(x,y)ÊǾֲ¿´°¿ÚµÄͼÏñ»Ò¶È£¬I(x+u,y+v)I(x+u,y+v)ÊÇÆ½ÒƺóµÄͼÏñ»Ò¶È£¬w(x,y)w(x,y)ÊÇ´°¿Úº¯Êý£¬¸Ã¿ÉÒÔÊǾØÐδ°¿Ú£¬Ò²¿ÉÒÔÊǶÔÿһ¸öÏñËØ¸³Óè²»Í¬È¨ÖØµÄ¸ß˹´°¿Ú£¬ÈçÏÂËùʾ£º

Harris½Çµã¼ì²â02

½Çµã¼ì²âÖÐʹE(u,v)E(u,v)µÄÖµ×î´ó¡£ÀûÓÃÒ»½×Ì©ÀÕÕ¹¿ªÓУº
I(x+u,y+v)=I(x,y)+Ixu+Iyv I(x+u,y+v)=I(x,y)+I_xu+I_yv
ÆäÖÐIxI_x ºÍ IyI_y ÊÇÑØxºÍy·½ÏòµÄµ¼Êý£¬¿ÉÓÃsobelËã×Ó¼ÆËã¡£

ÍÆµ¼ÈçÏ£º

Harris½Çµã¼ì²â03

MM¾ØÕó¾ö¶¨ÁËE(u,v)E(u,v)µÄȡֵ£¬ÏÂÃæÎÒÃÇÀûÓÃMMÀ´Çó½Çµã£¬MMÊÇIxI_x ºÍIy I_yµÄ¶þ´ÎÏÊý£¬¿ÉÒÔ±íʾ³ÉÍÖÔ²µÄÐÎ×´£¬ÍÖÔ²µÄ³¤¶Ì°ëÖáÓÉMMµÄÌØÕ÷Öµλ1\lambda_1ºÍλ2\lambda_2¾ö¶¨£¬·½ÏòÓÉÌØÕ÷ʸÁ¿¾ö¶¨£¬ÈçÏÂͼËùʾ£º

Harris½Çµã¼ì²â04

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

Harris½Çµã¼ì²â08

¹²¿É·ÖΪÈýÖÖÇé¿ö£º

  • ͼÏñÖеÄÖ±Ïß¡£Ò»¸öÌØÕ÷Öµ´ó£¬ÁíÒ»¸öÌØÕ÷ֵС£¬λ1>>λ2»ò λ2>>λ1¡£ÍÖÔ²º¯ÊýÖµÔÚijһ·½ÏòÉÏ´ó£¬ÔÚÆäËû·½ÏòÉÏС¡£
  • ͼÏñÖÐµÄÆ½Ãæ¡£Á½¸öÌØÕ÷Öµ¶¼Ð¡£¬ÇÒ½üËÆÏàµÈ£»ÍÖÔ²º¯ÊýÊýÖµÔÚ¸÷¸ö·½ÏòÉ϶¼Ð¡¡£
  • ͼÏñÖеĽǵ㡣Á½¸öÌØÕ÷Öµ¶¼´ó£¬ÇÒ½üËÆÏàµÈ£¬ÍÖÔ²º¯ÊýÔÚËùÓз½Ïò¶¼Ôö´ó

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

Harris½Çµã¼ì²â09

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

Harris½Çµã¼ì²â10

  • µ±RΪ´óÊýÖµµÄÕýÊýʱÊǽǵã
  • µ±RΪ´óÊýÖµµÄ¸ºÊýʱÊDZ߽ç
  • µ±RΪСÊýÊÇÈÏΪÊÇÆ½Ì¹ÇøÓò

2. ʵÏÖ

ÔÚ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½Çµã¼ì²â10

Harris½Çµã¼ì²âµÄÓÅȱµã£º

Óŵ㣺

  • Ðýת²»±äÐÔ£¬ÍÖԲת¹ýÒ»¶¨½Ç¶Èµ«ÊÇÆäÐÎ×´±£³Ö²»±ä£¨ÌØÕ÷Öµ±£³Ö²»±ä£©
  • ¶ÔÓÚͼÏñ»Ò¶ÈµÄ·ÂÉä±ä»¯¾ßÓв¿·ÖµÄ²»±äÐÔ£¬ÓÉÓÚ½ö½öʹÓÃÁËͼÏñµÄÒ»½éµ¼Êý£¬¶ÔÓÚͼÏñ»Ò¶ÈÆ½ÒÆ±ä»¯²»±ä£»¶ÔÓÚͼÏñ»Ò¶È³ß¶È±ä»¯²»±ä

ȱµã£º

  • ¶Ô³ß¶ÈºÜÃô¸Ð£¬²»¾ß±¸¼¸ºÎ³ß¶È²»±äÐÔ¡£
  • ÌáÈ¡µÄ½ÇµãÊÇÏñËØ¼¶µÄ
0 ·ÖÏíµ½£º
ºÍÎÒÃÇÔÚÏß½»Ì¸£¡
¡¾ÍøÕ¾µØÍ¼¡¿¡¾sitemap¡¿