北科資工二多媒體技術與應用 第六周個人作業 - 觀察 Harris Corner Detection

筆記說明

此筆記用途在於台北科技大學資訊工程系大二下多媒體技術與應用作業紀錄
並非所有人都適用,部分對我而言稍加容易的內容並不會寫在此內。
這是學習後心得的筆記,可能不太適用會未來的學生

由於我沒有學習過裡面的理論,因此這是資工大二學生透過網路與自身理解的筆記,學習價值並不高、且可能擁有大量錯誤。

題目說明

如果不想看那麼多話,建議可以直接略過。總之就像標題說的,觀察 Harris Corner Detection,然後得出結論

Harris Corner Detection

Chris Harris 和 Mike StephensMike 中得出的演算法,主要可以判斷圖片中的每一個轉角(轉折處)。

參數為

  • dst = cv2.cornerHarris(src =gray, blockSize , ksize ksize , k, dst=None, borderType=None)
    • src 圖片的影響,必須是單通道 8-bit or numpy.float 的影像
    • blocksize 轉角點檢測的區域大小
    • ksize 高斯 Sobel 中使用的 blocksize 大小
    • k 檢測方程中的自由參數
    • dst 輸出影像
    • boarderType 邊界類別

調整其參數的結論為

  • blocksize 點越小,越沒辦法判斷轉角
  • ksize 最大只能等於 blocksize
  • ksize 在使用 gauss-sobel 此公式時的大小,如果越大則細節處理越不精細
  • ksize 如果跟 blocksize 一樣大就只做一次 blocksize,越小做越多 blocksize
  • k 越大則轉角必須要越明顯,才可以知道,反之越小時,只需要小轉角就可以判斷

程式碼

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# -*- coding: utf-8 -*-
"""
Created on Sun Apr 18 18:17:58 2021

@author: user
"""

import numpy as np
import cv2

img = cv2.imread("./floor.jpg")
cv2.imshow('ori', img)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
gray = np.float32(gray)

dst = cv2.cornerHarris(gray,5,1,0.1)
dst = cv2.dilate(dst, None)
img[dst>0.01*dst.max()] = [0,0,255]
cv2.imshow('result', img)

原本圖片

透過上面程式碼產生的圖片

  • 版權聲明: 本部落格所有文章除有特別聲明外,均採用 Apache License 2.0 許可協議。轉載請註明出處!
  • © 2020-2024 John Doe
  • Powered by Hexo Theme Ayer
  • PV: UV: