iT邦幫忙

2025 iThome 鐵人賽

DAY 27
0
佛心分享-IT 人自學之術

OpwnCV影像處理新手村系列 第 27

🚀 DAY 27:透視變換(Perspective Transform)與文件掃描

  • 分享至 

  • xImage
  •  

透視變換是一種將圖像中的某些部分拉伸或扭曲,使其呈現為不同視角的技術。在影像處理中,透視變換常用於文件掃描、物體校正、場景校正等應用。

本章將介紹透視變換的原理、操作步驟,並以文件掃描為例,說明如何將拍攝的文件影像校正為正面矩形,並比較其與一般仿射變換的差異。


📌 透視變換原理

透視變換(Perspective Transformation)是根據影像中的四個角點,計算一個 3x3 的變換矩陣,將這些點映射到新圖像中的指定位置。
這種變換能夠處理平面物體的傾斜、畸變,讓影像呈現如同正面拍攝的效果。

比較說明:

  • 仿射變換:只能處理平移、旋轉、縮放,需三個點,無法校正透視畸變。
  • 透視變換:可處理傾斜、畸變,需四個點,適合文件掃描、場景校正等。

🖼 測試圖片準備

請準備一張包含平面文件或物體的圖片,例如 information_board.jpg

import cv2
import numpy as np

# 讀取影像
img = cv2.imread('information_board.jpg')

# 顯示原始影像
cv2.imshow('Original Image', img)

# 將以下程式碼放在所有顯示語句的最後面
cv2.waitKey()
cv2.destroyAllWindows()

說明:
選擇一張包含文件或物體的圖片,方便後續進行透視變換處理。

原圖


📌 透視變換步驟

步驟 1:選擇四個角點

需選擇影像中的四個角點,通常是文件或物體的四個頂點。
可用滑鼠點選方式快速取得座標:

points = []

def select_point(event, x, y, flags, param):
    if event == cv2.EVENT_LBUTTONDOWN and len(points) < 4:
        points.append([x, y])
        cv2.circle(img, (x, y), 5, (0, 0, 255), -1)
        cv2.imshow('Original Image', img)

cv2.imshow('Original Image', img)
cv2.setMouseCallback('Original Image', select_point)
cv2.waitKey(0)
cv2.destroyAllWindows()

print("你選的四個角點:", points)

如圖,紅色圓點標記了四個角落,按任意鍵後即可取得座標。

標記四個角落


步驟 2:定義目標矩形

將選定的四個角點映射到一個矩形區域,通常根據文件大小設定目標座標。


步驟 3:計算透視變換矩陣

使用 cv2.getPerspectiveTransform() 計算 3x3 透視變換矩陣。


步驟 4:應用透視變換

cv2.warpPerspective() 套用變換矩陣,得到校正後的影像。


📌 程式範例:透視變換與文件掃描

# 定義原始影像的四個角點(填入前面取得的座標)
pts1 = np.float32([[68, 42], [351, 8], [59, 258], [362, 290]])

# 定義目標矩形的四個點(左上、右上、左下、右下)
pts2 = np.float32([[0, 0], [400, 0], [0, 300], [400, 300]])

# 計算透視變換矩陣
matrix = cv2.getPerspectiveTransform(pts1, pts2)

# 應用透視變換
result = cv2.warpPerspective(img, matrix, (400, 300))

# 顯示結果
cv2.imshow('Warped Image', result)

說明:

  1. cv2.getPerspectiveTransform():計算從原始圖像到目標圖像的透視變換矩陣。
  2. cv2.warpPerspective():應用變換矩陣,將影像中的四個點映射到新區域。

透視變換


📌 透視變換應用與比較

  • 文件掃描:將拍攝的文件影像進行透視變換,使其呈現為正面的矩形圖像,便於後續 OCR 或儲存。
  • 物體校正:修正物體的傾斜與畸變,獲得正面視角。
  • 場景校正:調整場景中某些區域的比例或角度,提升分析準確性。

方法比較:

方法 需選點數 可校正畸變 適用場景 優點 缺點
仿射變換 3 基本旋轉/縮放/平移 計算簡單、速度快 無法校正透視畸變
透視變換 4 文件掃描、場景校正 可校正傾斜與畸變 需精確選取四個角點

🎯 今日結語

透視變換技術廣泛應用於文件掃描、物體校正等場景。
只需選擇四個角點並計算變換矩陣,即可將影像校正為理想的視角。
與仿射變換相比,透視變換能處理更複雜的畸變,適合多種實務應用


上一篇
🚀 DAY 26:影像金字塔(Image Pyramids)與多尺度處理
下一篇
🚀 DAY 28:模板匹配(Template Matching)
系列文
OpwnCV影像處理新手村28
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言