介紹
數字影象處理由涉及在計算機上處理影象的各種技術和方法組成。對影象進行各種型別的操作,構成數字影象處理。
瞭解影象實際上是什麼
影象基本上是二維訊號。訊號函式是 f(x,y),其中 x 和 y 在某個點的值生成該點的畫素。影象基本上是一個由 0 到 255 之間的數字組成的二維陣列。
影象處理涉及多種因素。影象處理有幾個主要動機。
影象處理幫助
改進我們儲存的數字資訊。
使影象處理自動化。
更好的影象最佳化,實現高效的儲存和傳輸。
這些年來,影象處理有了很大的進步,影象處理的現代商業應用也很多。
影象處理用途1。 影象校正、銳化和解析度校正
通常,我們希望我們可以將舊影象做得更好。這在今天是可能的。縮放、銳化、邊緣檢測、高動態範圍編輯都屬於這一類。所有這些步驟都有助於增強影象。大多數編輯軟體和影象校正程式碼都可以輕鬆完成這些操作。
2。 編輯應用程式和社交媒體的過濾器
如今,大多數編輯應用程式和社交媒體應用程式都提供過濾器。
以上是原始影象和過濾後的影象的示例。濾鏡使影象看起來更具視覺吸引力。濾鏡通常是一組函式,可以更改影象中的顏色和其他方面,使影象看起來不同。過濾器是影象處理的一個有趣應用。
3。 醫療技術
在醫學領域,影象處理用於各種任務,如 PET 掃描、X 射線成像、醫學 CT、紫外線成像、癌細胞影象處理等等。將影象處理引入醫療技術領域極大地改善了診斷過程。
左邊的影象是原始影象。右邊的影象是經過處理的影象。我們可以看到處理後的影象要好得多,可以用於更好的診斷。
4。 計算機/機器視覺
影象處理最有趣和最有用的應用之一是計算機視覺。計算機視覺用於使計算機看到、識別事物,並將整個環境作為一個整體進行處理。計算機視覺的一個重要用途是自動駕駛汽車、無人機等。CV 有助於障礙物檢測、路徑識別和理解環境。
這就是典型的計算機視覺對汽車自動駕駛儀的工作方式。計算機接收實時鏡頭並分析其他汽車、道路和其他障礙物。
5。 模式識別
模式識別是影象處理的一部分,涉及人工智慧和機器學習。影象處理用於找出影象中的各種模式和方面。模式識別用於手寫分析、影象識別、計算機輔助醫療診斷等。
6。 影片處理
影片基本上是影象的快速移動。影片處理中使用了各種影象處理技術。影片處理的一些方法是噪聲去除、影象穩定、幀速率轉換、細節增強等等。
Python 影象處理入門
讓我們從 Python 中的一些基本影象相關任務開始。我們將使用 PIL。
PIL:https://pypi。org/project/Pillow/
Python 影象庫用於各種影象處理任務。
安裝
pip install pillow
安裝了PIL後,我們現在可以轉到程式碼了。
首先,我們使用一些 matplotlib 函式。
import matplotlib。image as img
import matplotlib。pyplot as plt
import numpy as np
%matplotlib inline
將讀取以下影象。它被命名為 image1。jpg。
# reading jpg image
img = img。imread(‘image1。jpg’)
plt。imshow(img)
影象被讀取。
# modifying the shape of the image
lum1 = img[:, :, ]
plt。imshow(lum1)
現在修改了影象形狀。
現在我們將其更改為“熱”顏色圖。
要了解有關顏色圖的更多資訊,請訪問此連結:https://matplotlib。org/stable/tutorials/colors/colormaps。html。
plt。imshow(lum1, cmap =‘hot’)
plt。colorbar()
影象輸出看起來:
現在我們嘗試不同的顏色圖。
imgplot = plt。imshow(lum1)
imgplot。set_cmap(‘nipy_spectral’)
影象輸出:
使用顏色圖的原因是,通常在各種應用程式和用途中,擁有統一的顏色圖會有所幫助。閱讀有關顏色圖的更多資訊:在 Matplotlib 中選擇顏色圖https://matplotlib。org/stable/tutorials/colors/colormaps。html。
現在讓我們看看為什麼我們將影象稱為二維陣列。
#data type of lum1
print(type(lum1))
輸出:
print(lum1)
[[ 92 91 89 … 169 168 169]
[110 110 110 … 168 166 167]
[100 103 108 … 164 163 164]
…
[ 97 96 95 … 144 147 147]
[ 99 99 98 … 145 139 138]
[102 102 103 … 149 137 137]]
這些點只是為了表明它們之間還有更多的資料點。但是可以肯定的是,所有資料都是數字資料。
讓我們找出陣列的大小。
len(lum1)
輸出:320
len(lum1[300])
輸出:658
這為我們提供了影象的畫素數和尺寸:320*658。
我們稍後也會驗證這一點。
現在,我們使用 PIL。
from PIL import Image
我們將使用這個影象檔案,命名為:people。jpg。
img2 = Image。open(‘people。jpg’)
plt。imshow(img2)
影象被讀取。
現在,我們調整影象大小。
img2。thumbnail((50, 50), Image。ANTIALIAS) # resizes image in-place
imgplot = plt。imshow(img2)
imgplot1 = plt。imshow(img2, interpolation=“nearest”)
imgplot2 = plt。imshow(img2, interpolation=“bicubic”)
但是,為什麼我們在影象處理中故意模糊影象?通常對於模式識別和計算機視覺演算法,如果影象非常清晰,處理起來就會很困難。因此進行模糊處理以使影象平滑。模糊還可以使影象中的顏色過渡從一側到另一側更加平滑。
現在,讓我們驗證我們之前處理過的汽車影象的尺寸。
#some more interesting stuff
file=‘image1。jpg’
with Image。open(file) as image:
width, height = image。size
#Image width, height is be obtained
這些也是我們之前得到的維度。所以我們可以得出結論,影象是320*658。
讓我們也嘗試旋轉和轉置影象。
#Relative Path
img3 = Image。open(“image1。jpg”)
#Angle given
img_rot= img3。rotate(180)
#Saved in the same relative location
img_rot。save(“rotated_picture。jpg”)
這是旋轉後的影象。
#transposing image
transposed_img = img3。transpose(Image。FLIP_LEFT_RIGHT)
#Saved in the same relative location
transposed_img。save(“transposed_img。jpg”)
這是轉置後的影象。
尾註
影象處理有各種重要的應用,隨著時間的推移,方法和過程也會得到改進。
☆ END ☆
如果看到這裡,說明你喜歡這篇文章,請轉發、點贊。微信搜尋「uncle_pn」,歡迎新增小編微信「 mthler」,每日朋友圈更新一篇高質量博文。