[OpenCV基礎][Python]影像增強_影像銳利化

閱讀時間約 5 分鐘

在影像處理中,我們總是想要讓特徵更加明顯一點,可以使用銳利化方式將特徵的邊緣增強,提升影像的細節,圖像銳利後就會有提升解析度的感覺。

銳利化後

銳利化後

常見的圖像銳利化方法:

  1. 銳化濾波器:使用 OpenCV 的 cv2.filter2D 函數搭配適當的濾波核(如拉普拉斯濾波器)可以進行圖像銳利化。
  2. 增強對比度:可以通過調整圖像的對比度來增強圖像的銳利度,這可以通過直方圖均衡化或對比度增強的方法來實現。
  3. Unsharp Masking:這是一種常見的圖像銳化技術,通過將原始圖像和模糊版本的圖像相減,再加回原始圖像,可以得到銳利化的效果。


以下程式範例將用Unsharp Masking來實現圖像銳化:


拉普拉斯運算子是一種常用於影像增強的方法之一,特別是用於提高影像的邊緣細節。

在OpenCV中,你可以使用cv2.Laplacian函數來應用拉普拉斯運算子。


cv2.Laplacian 函式的基本語法:

#標準函式​
dst = cv2.Laplacian(src, ddepth[, dst[, ksize[, scale[, delta[, borderType]]]]])

#常用
laplacian = cv2.Laplacian(img, cv2.CV_64F)
  • src: 原始影像,可以是灰度影像或彩色影像。
  • ddepth: 輸出影像的深度(通常是 cv2.CV_8U、cv2.CV_16U、cv2.CV_64F 等)。
  • dst: 輸出影像。如果未提供,函數會自動創建一個與 src 大小和深度相同的影像。
  • ksize: 使用的拉普拉斯運算子的內核大小。如果未提供,則默認為3。
  • scale: 結果的比例因子,可以用於增強或減弱拉普拉斯梯度。默認為1。
  • delta: 結果的偏移值,可以用於調整結果的亮度。默認為0。
  • borderType: 設置邊界擴充的方式。默認為 cv2.BORDER_DEFAULT

這個函數返回一個包含拉普拉斯梯度的影像

通常,你會在這個結果上進一步進行處理,例如使用 cv2.convertScaleAbs 將結果轉為無符號八位整數形式


程式範例

import cv2
import numpy as np

def laplacian_sharpen(image_path, output_path):
# 讀取影像
img = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)

# 使用拉普拉斯運算子
laplacian = cv2.Laplacian(img, cv2.CV_64F)

# 將負值轉為正值
laplacian = cv2.convertScaleAbs(laplacian)

# 將原始影像和拉普拉斯增強的影像結合
sharpened_img = cv2.addWeighted(img, 1.5, laplacian, -0.5, 0)

# 保存結果
cv2.imwrite(output_path, sharpened_img)

# 呼叫函式,替換為你的輸入和輸出路徑
laplacian_sharpen('input_image.jpg', 'output_image_laplacian.jpg')
銳化比較圖

銳化比較圖

銳化後的圖就是使用cv2.addWeighted函數結合灰階的影像拉普拉斯增強影像

拉普拉斯增的圖

拉普拉斯增的圖

原圖直接銳利化。

程式範例第六行,cv2.IMREAD_GRAYSCALE拿掉即可。

# 讀取影像
img = cv2.imread(image_path)

些額外的參數可以調整以達到更好的影像增強效果。

程式範例第七行,拉普拉斯運算子新增其他參數

# 使用拉普拉斯運算子
laplacian = cv2.Laplacian(img, cv2.CV_64F, scale=2, delta=50)
不同參數比較

不同參數比較

以下是一些與 cv2.Laplacian 相關的重要參數:

ksize:

  • 參數類型:整數
  • 預設值:3(3x3 的運算子)
  • 內容:指定拉普拉斯運算子的內核大小。內核大小越大,檢測到的細節和邊緣越粗糙。
# 使用 5x5 的拉普拉斯運算子
laplacian = cv2.Laplacian(img, cv2.CV_64F, ksize=5)

ddepth:

  • 參數類型:整數
  • 預設值:-1(與原始影像相同的深度)
  • 內容:指定輸出影像的深度。通常情況下,使用 -1 表示與原始影像相同的深度,但你也可以指定其他深度值,例如 cv2.CV_8U
# 使用 8 位無符號深度的輸出影像
laplacian = cv2.Laplacian(img, cv2.CV_8U)

scale 和 delta:

  • scale 參數類型:浮點數
  • delta 參數類型:浮點數
  • 預設值:scale=1, delta=0
  • 內容:scale 用於縮放拉普拉斯運算子的結果,而 delta 用於調整結果的亮度。這兩個參數可以用來調整增強效果。
# 使用不同的 scale 和 delta 值
laplacian = cv2.Laplacian(img, cv2.CV_64F, scale=2, delta=50)


根據應用的需求和影像的特性來調整這些參數。在實際應用中,通常需要不斷嘗試不同的參數組合,以找到最適合的影像增強效果。






119會員
201內容數
本業是影像辨識軟體開發,閒暇時間進修AI相關內容,將學習到的內容寫成文章分享。
留言0
查看全部
發表第一個留言支持創作者!
螃蟹_crab的沙龍 的其他內容
直方圖均衡化處理是一種通過調整圖像的直方圖來改變圖像外觀和質量的圖像處理技術。這通常涉及對圖像的亮度、對比度和顏色分佈進行調整 此方法對於背景和前景均亮或均暗的影像很有用。​並在曝光過度或曝光不足的照片中獲得更好的細節。
直方圖是對圖像中像素強度分布的圖形表示。通過分析直方圖,我們可以獲得有關圖像對比度、亮度和色彩分佈的有用信息。
在某些特別的情況下,需要去調整亮度及對比度,讓我們想要的影像特徵更加明顯 本文將介紹利用這兩個函數 cv2.convertScaleAbs 和 cv2.addWeighted 來調整亮度及對比度。
涉及圖像處理和計算機視覺時,色彩空間轉換是一個常見操作,應用如下: 降維: 將一張彩色圖像轉換為灰度圖像可以減少數據的維度,簡化處理過程,同時在某些情況下保留重要的視覺信息。 突顯特徵: 在某些情況下,某些色彩通道可能包含冗餘或不必要的信息,通過轉換到其他色彩空間,可以更好地突顯圖像中的重要特徵
warpAffine 和 warpPerspective 都是 OpenCV 中用於圖像變換的函數,主要差異在於這兩種函數所使用的變換矩陣的類型和適用場景。 本文主要討論warpAffine,另外warpPerspective可以此篇文章
當我們在拍照時,有時候會期望圖像中物體是呈現我們想要的樣子,就可以利用透視變換的方式,將物體捏造成我們想要的樣子。 當我們拍攝文件或書籍時,如果有角度和距離的變化,文件可能會變形。透視變換可用於校正這種變形,使文件呈現平整的視覺效果。 cv2.warpPerspective
直方圖均衡化處理是一種通過調整圖像的直方圖來改變圖像外觀和質量的圖像處理技術。這通常涉及對圖像的亮度、對比度和顏色分佈進行調整 此方法對於背景和前景均亮或均暗的影像很有用。​並在曝光過度或曝光不足的照片中獲得更好的細節。
直方圖是對圖像中像素強度分布的圖形表示。通過分析直方圖,我們可以獲得有關圖像對比度、亮度和色彩分佈的有用信息。
在某些特別的情況下,需要去調整亮度及對比度,讓我們想要的影像特徵更加明顯 本文將介紹利用這兩個函數 cv2.convertScaleAbs 和 cv2.addWeighted 來調整亮度及對比度。
涉及圖像處理和計算機視覺時,色彩空間轉換是一個常見操作,應用如下: 降維: 將一張彩色圖像轉換為灰度圖像可以減少數據的維度,簡化處理過程,同時在某些情況下保留重要的視覺信息。 突顯特徵: 在某些情況下,某些色彩通道可能包含冗餘或不必要的信息,通過轉換到其他色彩空間,可以更好地突顯圖像中的重要特徵
warpAffine 和 warpPerspective 都是 OpenCV 中用於圖像變換的函數,主要差異在於這兩種函數所使用的變換矩陣的類型和適用場景。 本文主要討論warpAffine,另外warpPerspective可以此篇文章
當我們在拍照時,有時候會期望圖像中物體是呈現我們想要的樣子,就可以利用透視變換的方式,將物體捏造成我們想要的樣子。 當我們拍攝文件或書籍時,如果有角度和距離的變化,文件可能會變形。透視變換可用於校正這種變形,使文件呈現平整的視覺效果。 cv2.warpPerspective
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
Thumbnail
點陣圖 點陣圖是由許多方格像素組成的圖片, 因此我們常常在將圖片放大時會呈現像是馬賽克的狀況, 假設期望圖片越清晰那所需要的像素會較多個, 因此空間耗用量也相對較大。 常見的格式有: .JPG .PNG .GIF .BMP .TIFF等格式。 繪製程式碼: 向量圖 向量
Thumbnail
繼上次分享的「【🔒 影像辨識 - 影像處理】Ep.1 關於影像的基本單位, 相信我們對於影像的儲存應該有了基本的認識了, 那麼接下來我們會需要的是了解顏色的組成。 我們除了在文章裡講述概念之外, 也會提供實作的數位作品分享給大家, 請大家根據範例學習與練習。 關於顏色 灰階的時代 早期尚未
Thumbnail
歡迎來到「阿Han的軟體心法實戰營 - 影像處理」系列的文章區,我們會針對影像處理的相關知識、開發技巧進行分享,並教你手把手用程式寫出屬於自己的影像處理程式, 當然也會包括AI模型訓練的部分,就讓我們一起來探索影像處理的領域吧! 在進入影像辨識的世界之前, 我們先來了解一下關於解析度的基本概念吧!
Thumbnail
在樹莓派安裝OpenCV的紀錄。板子是樹莓派3B(沒有+),系統raspbian bullseye 32bit灌到USB隨身碟。
Thumbnail
#安裝 OpenCV 相關套件 pip install opencv-python pip install opencv-contrib-python pip install matplotlib
Haar Cascade classifier OpenCV 官方 Github:https://github.com/opencv/opencv/tree/4.x/data 人臉特徵模型:haarcascade_frontalface_default.xml 資料來源: https://steam
Thumbnail
OpenCV 讀取圖片 原碼:https://reurl.cc/3354ZL 成果: OpenCV 本身有提供讀取圖檔的函數可用,讀取圖檔,只要呼叫 cv2.imread 即可將圖片讀取進來,以 cv2.imread 讀進來的資料,會儲存成一個 NumPy 的陣列。 將圖片讀取進來之後,可使用 c
opencv is use BGR color matplotlib is use RGB color 顯示圖片 opencv matplotlib
Thumbnail
綠界科技雖然為 OpenCart 電商系統推出了可直接安裝使用的金流擴充模組,但其設計的模組架構,並不算完全符合 OpenCart 金流模組的架構規則,包含後臺編輯不同付款方式時的設定,無法獨立分開設定,前台的金流選擇,更是被設計成兩段式的模式,非常不符合台灣消費者慣用的習性。
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
Thumbnail
點陣圖 點陣圖是由許多方格像素組成的圖片, 因此我們常常在將圖片放大時會呈現像是馬賽克的狀況, 假設期望圖片越清晰那所需要的像素會較多個, 因此空間耗用量也相對較大。 常見的格式有: .JPG .PNG .GIF .BMP .TIFF等格式。 繪製程式碼: 向量圖 向量
Thumbnail
繼上次分享的「【🔒 影像辨識 - 影像處理】Ep.1 關於影像的基本單位, 相信我們對於影像的儲存應該有了基本的認識了, 那麼接下來我們會需要的是了解顏色的組成。 我們除了在文章裡講述概念之外, 也會提供實作的數位作品分享給大家, 請大家根據範例學習與練習。 關於顏色 灰階的時代 早期尚未
Thumbnail
歡迎來到「阿Han的軟體心法實戰營 - 影像處理」系列的文章區,我們會針對影像處理的相關知識、開發技巧進行分享,並教你手把手用程式寫出屬於自己的影像處理程式, 當然也會包括AI模型訓練的部分,就讓我們一起來探索影像處理的領域吧! 在進入影像辨識的世界之前, 我們先來了解一下關於解析度的基本概念吧!
Thumbnail
在樹莓派安裝OpenCV的紀錄。板子是樹莓派3B(沒有+),系統raspbian bullseye 32bit灌到USB隨身碟。
Thumbnail
#安裝 OpenCV 相關套件 pip install opencv-python pip install opencv-contrib-python pip install matplotlib
Haar Cascade classifier OpenCV 官方 Github:https://github.com/opencv/opencv/tree/4.x/data 人臉特徵模型:haarcascade_frontalface_default.xml 資料來源: https://steam
Thumbnail
OpenCV 讀取圖片 原碼:https://reurl.cc/3354ZL 成果: OpenCV 本身有提供讀取圖檔的函數可用,讀取圖檔,只要呼叫 cv2.imread 即可將圖片讀取進來,以 cv2.imread 讀進來的資料,會儲存成一個 NumPy 的陣列。 將圖片讀取進來之後,可使用 c
opencv is use BGR color matplotlib is use RGB color 顯示圖片 opencv matplotlib
Thumbnail
綠界科技雖然為 OpenCart 電商系統推出了可直接安裝使用的金流擴充模組,但其設計的模組架構,並不算完全符合 OpenCart 金流模組的架構規則,包含後臺編輯不同付款方式時的設定,無法獨立分開設定,前台的金流選擇,更是被設計成兩段式的模式,非常不符合台灣消費者慣用的習性。