在正式進入圖像處理與電腦視覺的領域之前,先來簡單說明「人類如何看見世界」這件事。
人類的眼球由數個構造所構成,包含瞳孔 (pupil)、水晶體 (lens)、虹膜 (iris)、視網膜 (retina)、角膜 (cornea) 等等。當光線打過來時,他們的運作流程大致如下
對電腦來說,這與一般的圖像處理比起來,如何「感知與理解」是最大的挑戰。
圖像處理 (image processing),是指對影像進行加工或最佳化,目的主要是改善影像的品質或從中提取資訊。圖像處理的輸入通常都是圖片,輸出則多為圖片或數據,應用包括但不限於:
手機添加的各種濾鏡、亮度與對比調整,以及所謂的「魔術橡皮擦」功能都屬於圖像處理的範疇。
透過電腦將 MRI 或 CT 影像的病變部位提高對比,協助醫生分析病情。或是進行影像分割,由電腦自動心臟等部位圈選,協助醫療人員判斷。
使用各種方式,將黑白或模糊的照片上色與清晰化。
電腦視覺 (computer vision) 的目標是讓電腦能夠理解圖像的內容。電腦視覺通常不改變圖片本身,追求的是讓電腦「看懂」其中的場景與脈絡。常見的應用有:
目前快速發展的領域,透過多個攝影機讓車輛能感知行人、號誌、車道、障礙物等等,同時做出決策。
使用無人機或其他監控系統,偵測病蟲害、雜草,或是預估產量。
虛擬實境 (virtual reality, VR) 跟擴增實境 (augmented reality, AR) 整合了虛擬與現實的感官體驗,常見的產品有 Apple 的 Vision Pro 與 Meta 的 Quest 等。
簡單介紹完相關應用後,我們首先要安裝我們第一個的 Python 套件:OpenCV。
OpenCV 由 Intel 所發起,為我們這 30 天鐵人賽中核心的圖像處理與電腦視覺套件。
我們的電腦環境如下:
同時我們會使用 Anaconda 開啟虛擬環境,可以到這裡進行安裝,本文不再贅述相關安裝與建立虛擬環境的流程。
首先開啟終端機,輸入
pip install opencv-python
如果安裝成功,我們在編輯器新建一個程式,並輸入
import cv2
即可導入套件,同時應該不會出現任何錯誤。
我們可以透過 cv2.imread()
跟 cv2.imshow()
來讀取與顯示圖片
import cv2
img_path = cv2.imread('cat.jpg') # 讀取圖片
cv2.imshow('Img', img_path) # 顯示圖片
cv2.waitKey(0) # 等待使用者按鍵
cv2.destroyAllWindows() # 關閉所有由 OpenCV 建立的視窗
cv2.imread(Image_Path)
cv2.imshow(Window_Name, Image)
cv2.waitKey(Time)
今天我們簡介了人類視覺系統、圖像處理與電腦視覺的概念,並簡單使用 OpenCV 來讀取與顯示圖片。在明天的鐵人賽中,我們將更深入地使用 OpenCV 的各種功能,以及說明色彩空間的概念。