使用PIL查詢影像差異


在影像處理中,查詢兩幅影像之間的差異是各種應用中的一個關鍵步驟。理解兩幅影像之間的差異至關重要,這可以幫助我們檢測變化、識別物體以及其他相關應用。在本博文中,我們將探討如何使用Python影像庫(PIL)查詢兩幅影像之間的差異。

安裝和語法

要使用PIL,我們需要使用pip包管理器安裝它。我們可以在終端中執行以下命令來安裝PIL:

pip install pillow

要使用PIL查詢兩幅影像之間的差異,我們可以使用ImageChops模組。ImageChops模組提供了各種影像操作,包括查詢兩幅影像之間的差異。使用PIL查詢兩幅影像之間差異的語法如下:

from PIL import Image, ImageChops

# find the difference
diff = ImageChops.difference(img1, img2)

# show the difference
diff.show()

演算法

  • 匯入所有必要的模組,例如用於影像比較的ImageChops模組和用於影像處理的PIL模組。

  • 應該使用PIL模組提供的Image.open()函式開啟需要比較的兩幅影像。

  • 要確定兩幅影像之間的差異,請使用ImageChops.difference()函式。此函式在接收兩個影像物件作為輸入後,返回一個新的影像物件,該物件表示兩個輸入影像之間逐畫素差異的絕對值。

  • 最終影像將為灰度影像,白色畫素表示兩幅影像之間差異的區域,黑色畫素表示沒有差異。

  • 使用Image模組提供的show()函式顯示差異影像。這將在新視窗中顯示差異影像。

  • Image模組的save()方法是一種可選方法,可用於將不同的影像儲存到檔案。此方法使用檔名和格式作為輸入將影像儲存到選定的檔案。

注意:請記住,要比較的兩幅影像的大小和解析度應該相同,否則,差異影像可能無法準確地表示兩幅影像之間的差異。

下載並將以下影像重新命名為beach.jpg和beach2.jpg

示例1

from PIL import Image, ImageChops

# open images
img1 = Image.open('image1.jpg')
img2 = Image.open('image2.jpg')

# find the difference
diff = ImageChops.difference(img1, img2)

# show the difference
diff.show()

此程式碼開啟兩幅影像,image1.jpgimage2.jpg,並使用ImageChops.difference()方法查詢它們之間的差異。然後,它使用show()方法顯示差異影像。

示例2

from PIL import Image, ImageChops

# open images
img1 = Image.open('beach.jpg')
img2 = Image.open('beach2.jpg')

# resize images
img1 = img1.resize((400, 400))
img2 = img2.resize((400, 400))

# find the difference
diff = ImageChops.difference(img1, img2)

# threshold the difference image
threshold = 50
diff = diff.point(lambda x: 0 if x < threshold else 255)

# show the difference
diff.show()

此程式碼開啟兩幅影像,image1.png和image2.png,並將它們的大小調整為400x400。然後,它使用ImageChops.difference()方法查詢兩幅影像之間的差異。然後,使用point()方法將差異影像的閾值設定為50。最後,使用show()方法顯示差異影像。

應用

  • 透過檢視影像之間的差異,可以找到觀測電影或照片中的變化。

  • 它還可以用於在影像處理應用程式中發現和突出顯示視覺變化,例如用於醫學成像以定位腫瘤或其他異常情況。

  • 在法醫調查中,比較監控錄影可以幫助揭露嫌疑人或發現新的證據,這種方法特別有用。

  • 此外,它往往被用於現代應用程式中來篩選硬體並查明任何變化或故障。

結論

在本教程中,我們學習瞭如何使用Python的Python影像庫(PIL)來確定兩幅影像之間的差異。第一步是安裝PIL並匯入所需的模組。然後,討論了兩種確定兩幅影像之間差異的方法——第一種方法是使用ImageChops.difference()函式,這是一種快速簡便的方法來確定兩幅影像之間的差異;第二種方法包括使用NumPy從兩幅影像中減去畫素值,以建立突出顯示差異的新影像。最後,我們討論了影像差異檢測的一些潛在用途。

更新於:2023年8月21日

2K+ 次瀏覽

啟動你的職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.