一文總結Python數字影象處理基礎知識與前沿應用

介紹

數字影象處理由涉及在計算機上處理影象的各種技術和方法組成。對影象進行各種型別的操作,構成數字影象處理。

瞭解影象實際上是什麼

影象基本上是二維訊號。訊號函式是 f(x,y),其中 x 和 y 在某個點的值生成該點的畫素。影象基本上是一個由 0 到 255 之間的數字組成的二維陣列。

影象處理涉及多種因素。影象處理有幾個主要動機。

影象處理幫助

改進我們儲存的數字資訊。

使影象處理自動化。

更好的影象最佳化,實現高效的儲存和傳輸。

這些年來,影象處理有了很大的進步,影象處理的現代商業應用也很多。

影象處理用途1。  影象校正、銳化和解析度校正

通常,我們希望我們可以將舊影象做得更好。這在今天是可能的。縮放、銳化、邊緣檢測、高動態範圍編輯都屬於這一類。所有這些步驟都有助於增強影象。大多數編輯軟體和影象校正程式碼都可以輕鬆完成這些操作。

2。 編輯應用程式和社交媒體的過濾器

如今,大多數編輯應用程式和社交媒體應用程式都提供過濾器。

一文總結Python數字影象處理基礎知識與前沿應用

以上是原始影象和過濾後的影象的示例。濾鏡使影象看起來更具視覺吸引力。濾鏡通常是一組函式,可以更改影象中的顏色和其他方面,使影象看起來不同。過濾器是影象處理的一個有趣應用。

3。 醫療技術

在醫學領域,影象處理用於各種任務,如 PET 掃描、X 射線成像、醫學 CT、紫外線成像、癌細胞影象處理等等。將影象處理引入醫療技術領域極大地改善了診斷過程。

一文總結Python數字影象處理基礎知識與前沿應用

左邊的影象是原始影象。右邊的影象是經過處理的影象。我們可以看到處理後的影象要好得多,可以用於更好的診斷。

4。 計算機/機器視覺

影象處理最有趣和最有用的應用之一是計算機視覺。計算機視覺用於使計算機看到、識別事物,並將整個環境作為一個整體進行處理。計算機視覺的一個重要用途是自動駕駛汽車、無人機等。CV 有助於障礙物檢測、路徑識別和理解環境。

一文總結Python數字影象處理基礎知識與前沿應用

這就是典型的計算機視覺對汽車自動駕駛儀的工作方式。計算機接收實時鏡頭並分析其他汽車、道路和其他障礙物。

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。

一文總結Python數字影象處理基礎知識與前沿應用

# reading jpg image

img = img。imread(‘image1。jpg’)

plt。imshow(img)

一文總結Python數字影象處理基礎知識與前沿應用

影象被讀取。

# modifying the shape of the image

lum1 = img[:, :, ]

plt。imshow(lum1)

現在修改了影象形狀。

一文總結Python數字影象處理基礎知識與前沿應用

現在我們將其更改為“熱”顏色圖。

要了解有關顏色圖的更多資訊,請訪問此連結:https://matplotlib。org/stable/tutorials/colors/colormaps。html。

plt。imshow(lum1, cmap =‘hot’)

plt。colorbar()

影象輸出看起來:

一文總結Python數字影象處理基礎知識與前沿應用

現在我們嘗試不同的顏色圖。

imgplot = plt。imshow(lum1)

imgplot。set_cmap(‘nipy_spectral’)

影象輸出:

一文總結Python數字影象處理基礎知識與前沿應用

使用顏色圖的原因是,通常在各種應用程式和用途中,擁有統一的顏色圖會有所幫助。閱讀有關顏色圖的更多資訊:在 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。

一文總結Python數字影象處理基礎知識與前沿應用

img2 = Image。open(‘people。jpg’)

plt。imshow(img2)

一文總結Python數字影象處理基礎知識與前沿應用

影象被讀取。

現在,我們調整影象大小。

img2。thumbnail((50, 50), Image。ANTIALIAS)  # resizes image in-place

imgplot = plt。imshow(img2)

一文總結Python數字影象處理基礎知識與前沿應用

imgplot1 = plt。imshow(img2, interpolation=“nearest”)

一文總結Python數字影象處理基礎知識與前沿應用

imgplot2 = plt。imshow(img2, interpolation=“bicubic”)

一文總結Python數字影象處理基礎知識與前沿應用

但是,為什麼我們在影象處理中故意模糊影象?通常對於模式識別和計算機視覺演算法,如果影象非常清晰,處理起來就會很困難。因此進行模糊處理以使影象平滑。模糊還可以使影象中的顏色過渡從一側到另一側更加平滑。

現在,讓我們驗證我們之前處理過的汽車影象的尺寸。

#some more interesting stuff

file=‘image1。jpg’

with Image。open(file) as image:

width, height = image。size

#Image width, height is be obtained

一文總結Python數字影象處理基礎知識與前沿應用

這些也是我們之前得到的維度。所以我們可以得出結論,影象是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”)

一文總結Python數字影象處理基礎知識與前沿應用

這是旋轉後的影象。

#transposing image

transposed_img = img3。transpose(Image。FLIP_LEFT_RIGHT)

#Saved in the same relative location

transposed_img。save(“transposed_img。jpg”)

一文總結Python數字影象處理基礎知識與前沿應用

這是轉置後的影象。

尾註

影象處理有各種重要的應用,隨著時間的推移,方法和過程也會得到改進。

☆ END ☆

如果看到這裡,說明你喜歡這篇文章,請轉發、點贊。微信搜尋「uncle_pn」,歡迎新增小編微信「 mthler」,每日朋友圈更新一篇高質量博文。