[OpneCV][Python]透視變換矩陣與四個角點教學

更新 發佈閱讀 6 分鐘

什麼是透視變換矩陣?

在影像處理中,**透視變換矩陣(Perspective Transformation Matrix)**是一種可以把一個平面上的四邊形區域,映射到另一個平面上四邊形區域的數學工具。

這個矩陣通常是 3x3 的形式,稱為「單映射矩陣(Homography Matrix)」。

公式

假設原圖上一個點座標是 (x, y),經過透視變換後的新座標 (x', y') 計算如下:

|x'|     |a11 a12 a13|   |x|
|y'| = |a21 a22 a23| * |y|
|w | |a31 a32 a33| |1|

最後 x' = x'/w, y' = y'/w

這種變換可以同時做到平移、旋轉、縮放、斜切,甚至遠近感(透視效果)。


四個角點的意義與用法

在 OpenCV 中,如果你想要把一個矩形區域「拉正」或「變形」,你需要指定這個區域的四個角點

這四個角點,通常是依照順時針或逆時針順序排列,分別代表:

  1. 左上角 (Top-Left)
  2. 右上角 (Top-Right)
  3. 右下角 (Bottom-Right)
  4. 左下角 (Bottom-Left)

範例說明

假設你有一個矩形區域,左上角座標是 (x0, y0),寬度是 W,高度是 H。

你可以這樣定義這個區域的四個角點:

self.template_4corner = [
(x0, y0), # 左上
(x0 + W, y0), # 右上
(x0 + W, y0 + H), # 右下
(x0, y0 + H) # 左下
]

每個點的意義

  • (x0, y0):矩形的左上角
  • (x0 + W, y0):從左上往右移動 W 個像素,得到右上角
  • (x0 + W, y0 + H):從右上往下移動 H 個像素,得到右下角
  • (x0, y0 + H):從左上往下移動 H 個像素,得到左下角

這樣的寫法可以快速產生一個矩形區域的四個角點座標。

圖示說明

(x0, y0)        (x0+W, y0)
+---------------+
| |
| |
| |
+---------------+
(x0, y0+H) (x0+W, y0+H)

實際應用

1. 影像校正

如果你有一張照片,裡面有一張歪斜的紙張,你可以手動標記這張紙的四個角點,然後把它「拉正」成一個矩形。

視覺化說明

原圖(斜斜的紙):

\+-------------------+
| |
| /---------\ |
| / \ |
| / \ |
| \ / |
| \ / |
| \---------/ |
+-------------------+

經過 warpPerspective 後:

+-------------+
| |
| |
| |
| |
+-------------+



2. ROI(感興趣區域)擷取

在自動化檢測、OCR、文件掃描等應用中,常常需要先定義一個矩形區域(ROI),再進行後續處理。

3. 影像對齊

在做模板匹配、影像拼接時,也常常需要用四個角點來對齊不同的區域。


取得透視變換矩陣

你只要有來源區域的四個角點(如上),以及目標區域的四個角點(通常是 [(0,0), (W,0), (W,H), (0,H)]),就可以用 OpenCV 的 cv2.getPerspectiveTransform 來計算出變換矩陣 M:

import numpy as np
import cv2

src_pts = np.float32(self.template_4corner)
dst_pts = np.float32([(0, 0), (W, 0), (W, H), (0, H)])

M = cv2.getPerspectiveTransform(src_pts, dst_pts)

這個 M 就是你要的透視變換矩陣,可以用來做 cv2.warpPerspective 影像變形。


小結

  • 四個角點的順序與座標,決定了你要變形的區域。
  • 只要會組出這四個點,就能輕鬆做出 ROI 擷取、影像拉正、視角校正等功能。
  • 這種寫法在自動化影像處理、工業檢測、文件掃描等領域非常常見。


實際程式範例文章 可參考我另外一篇文章喔

[OpenCV基礎][Python]warpPerspective透視變換



留言
avatar-img
留言分享你的想法!
avatar-img
螃蟹_crab的沙龍
153會員
297內容數
本業是影像辨識軟體開發,閒暇時間進修AI相關內容,將學習到的內容寫成文章分享。 興趣是攝影,踏青,探索未知領域。 人生就是不斷的挑戰及自我認清,希望老了躺在床上不會後悔自己什麼都沒做。
你可能也想看
Thumbnail
透過蝦皮分潤計畫,輕鬆賺取零用金!本文分享5-6月實測心得,包含數據流程、實際收入、平臺優點及注意事項,並推薦高分潤商品,教你如何運用空閒時間創造被動收入。
Thumbnail
透過蝦皮分潤計畫,輕鬆賺取零用金!本文分享5-6月實測心得,包含數據流程、實際收入、平臺優點及注意事項,並推薦高分潤商品,教你如何運用空閒時間創造被動收入。
Thumbnail
單身的人有些會養寵物,而我養植物。畢竟寵物離世會傷心,植物沒養好再接再厲就好了~(笑)
Thumbnail
單身的人有些會養寵物,而我養植物。畢竟寵物離世會傷心,植物沒養好再接再厲就好了~(笑)
Thumbnail
不知你有沒有過這種經驗?衛生紙只剩最後一包、洗衣精倒不出來,或電池突然沒電。這次一次補貨,從電池、衛生紙到洗衣精,還順便分享使用心得。更棒的是,搭配蝦皮分潤計畫,愛用品不僅自己用得安心,分享給朋友還能賺回饋。立即使用推薦碼 X5Q344E,輕鬆上手,隨時隨地賺取分潤!
Thumbnail
不知你有沒有過這種經驗?衛生紙只剩最後一包、洗衣精倒不出來,或電池突然沒電。這次一次補貨,從電池、衛生紙到洗衣精,還順便分享使用心得。更棒的是,搭配蝦皮分潤計畫,愛用品不僅自己用得安心,分享給朋友還能賺回饋。立即使用推薦碼 X5Q344E,輕鬆上手,隨時隨地賺取分潤!
Thumbnail
身為一個典型的社畜,上班時間被會議、進度、KPI 塞得滿滿,下班後只想要找一個能夠安靜喘口氣的小角落。對我來說,畫畫就是那個屬於自己的小樹洞。無論是胡亂塗鴉,還是慢慢描繪喜歡的插畫人物,那個專注在筆觸和色彩的過程,就像在幫心靈按摩一樣,讓緊繃的神經慢慢鬆開。
Thumbnail
身為一個典型的社畜,上班時間被會議、進度、KPI 塞得滿滿,下班後只想要找一個能夠安靜喘口氣的小角落。對我來說,畫畫就是那個屬於自己的小樹洞。無論是胡亂塗鴉,還是慢慢描繪喜歡的插畫人物,那個專注在筆觸和色彩的過程,就像在幫心靈按摩一樣,讓緊繃的神經慢慢鬆開。
Thumbnail
本文將說明如何去辨識出圖片文字​位置及高寬。
Thumbnail
本文將說明如何去辨識出圖片文字​位置及高寬。
Thumbnail
觀看本文將可以學習到如何利用Numpy求得物件的邊緣點,及算出物件的寬跟高。 有詳細的程式邏輯說明,及各函式用法說明。 綠點及紅點則是採樣到的邊界點,比較粗的點是偵測到的最大值 完整程式碼 import cv2 import numpy as np import matplotl
Thumbnail
觀看本文將可以學習到如何利用Numpy求得物件的邊緣點,及算出物件的寬跟高。 有詳細的程式邏輯說明,及各函式用法說明。 綠點及紅點則是採樣到的邊界點,比較粗的點是偵測到的最大值 完整程式碼 import cv2 import numpy as np import matplotl
Thumbnail
瞭解二值化影像的應用和程式語法,包括物體檢測和分割、邊緣檢測、圖像分析和測量、文檔辨識,以及使用cv2.threshold的參數和程式範例。
Thumbnail
瞭解二值化影像的應用和程式語法,包括物體檢測和分割、邊緣檢測、圖像分析和測量、文檔辨識,以及使用cv2.threshold的參數和程式範例。
Thumbnail
直方圖均衡化處理是一種通過調整圖像的直方圖來改變圖像外觀和質量的圖像處理技術。這通常涉及對圖像的亮度、對比度和顏色分佈進行調整 此方法對於背景和前景均亮或均暗的影像很有用。​並在曝光過度或曝光不足的照片中獲得更好的細節。
Thumbnail
直方圖均衡化處理是一種通過調整圖像的直方圖來改變圖像外觀和質量的圖像處理技術。這通常涉及對圖像的亮度、對比度和顏色分佈進行調整 此方法對於背景和前景均亮或均暗的影像很有用。​並在曝光過度或曝光不足的照片中獲得更好的細節。
Thumbnail
直方圖是對圖像中像素強度分布的圖形表示。通過分析直方圖,我們可以獲得有關圖像對比度、亮度和色彩分佈的有用信息。
Thumbnail
直方圖是對圖像中像素強度分布的圖形表示。通過分析直方圖,我們可以獲得有關圖像對比度、亮度和色彩分佈的有用信息。
Thumbnail
廢話不多說,先上成果圖。 成果圖 主要實現方法 1.灰階後利用cv2.Canny找物體的邊緣 2.找物件相對應的直線cv2.HoughLines 3.分類為橫向和垂直的直線角度,求得相對於物件的旋轉角度 4.根據算出的相對應旋轉角度將物件轉正
Thumbnail
廢話不多說,先上成果圖。 成果圖 主要實現方法 1.灰階後利用cv2.Canny找物體的邊緣 2.找物件相對應的直線cv2.HoughLines 3.分類為橫向和垂直的直線角度,求得相對於物件的旋轉角度 4.根據算出的相對應旋轉角度將物件轉正
Thumbnail
涉及圖像處理和計算機視覺時,色彩空間轉換是一個常見操作,應用如下: 降維: 將一張彩色圖像轉換為灰度圖像可以減少數據的維度,簡化處理過程,同時在某些情況下保留重要的視覺信息。 突顯特徵: 在某些情況下,某些色彩通道可能包含冗餘或不必要的信息,通過轉換到其他色彩空間,可以更好地突顯圖像中的重要特徵
Thumbnail
涉及圖像處理和計算機視覺時,色彩空間轉換是一個常見操作,應用如下: 降維: 將一張彩色圖像轉換為灰度圖像可以減少數據的維度,簡化處理過程,同時在某些情況下保留重要的視覺信息。 突顯特徵: 在某些情況下,某些色彩通道可能包含冗餘或不必要的信息,通過轉換到其他色彩空間,可以更好地突顯圖像中的重要特徵
Thumbnail
形態學操作在影像處理中有多種應用,特別是在處理二值化影像(黑白影像)。 在影像處理應用上,基本上都由侵蝕,膨脹這兩種方法,組合搭配而成。 常見應用場景 物體檢測與分割: 形態學操作可以用於增強或改善二值化影像中的物體邊界,使得物體的檢測和分割更加準確。
Thumbnail
形態學操作在影像處理中有多種應用,特別是在處理二值化影像(黑白影像)。 在影像處理應用上,基本上都由侵蝕,膨脹這兩種方法,組合搭配而成。 常見應用場景 物體檢測與分割: 形態學操作可以用於增強或改善二值化影像中的物體邊界,使得物體的檢測和分割更加準確。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News