Python----OpenCV(圖像増強——高通濾波(索貝爾算子、沙爾算子、拉普拉斯算子),圖像浮雕與特效處理)

一、?高通濾波

????????高通濾波是對圖像進行卷積操作,以保留圖像中的快速變化部分(如邊緣和細節),同時抑 制低頻分量(如大面積平坦區域)。

應用場景

  • 邊緣檢測:提取物體輪廓和邊界。
  • 特征提取:用于后續計算機視覺任務(如目標檢測)。
  • 圖像銳化:增強圖像清晰度。

二、高通濾波——索貝爾算子

????????索貝爾算子是一種經典的邊緣檢測算子,通過計算像素梯度,檢測圖像的水平和垂直邊緣。

import cv2# 讀取原圖
# 使用 OpenCV 讀取圖像,返回一個 BGR 格式的圖像
img = cv2.imread('./images/waiguoren.png')# 將原圖轉換為灰度圖
# 灰度圖是處理圖像時常用的格式,它可以去除顏色信息,只保留亮度信息
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 計算水平方向的梯度
# 通過索貝爾算子計算水平方向上的變化量,即圖像在 X 軸方向上的梯度
grad_x = cv2.Sobel(gray_img, cv2.CV_64F, 1, 0, ksize=3)# 計算垂直方向的梯度
# 同樣地,計算圖像在 Y 軸方向上的變化量,即圖像在 Y 軸方向上的梯度
grad_y = cv2.Sobel(gray_img, cv2.CV_64F, 0, 1, ksize=3)# 計算梯度幅度
# 通過計算水平方向和垂直方向的梯度值的平方和,再開根號,得到每個像素點的梯度幅度
# 這是用來提取邊緣信息的,邊緣區域的梯度幅度通常較大
magnitude = cv2.magnitude(grad_x, grad_y)
magnitude = cv2.normalize(magnitude, None, 0, 255, cv2.NORM_MINMAX, cv2.CV_8U)cv2.imshow('img', img)
cv2.imshow('gray_img', gray_img)
cv2.imshow('magnitude', magnitude)
cv2.waitKey(0)
cv2.destroyAllWindows()

三、高通濾波——沙爾算子

????????沙爾算子是對索貝爾算子的優化版本,它在小窗口(如 3×3)中提供更高的精度。

????????索貝爾算子的卷積核比沙爾算子具有更強的邊緣檢測能力,它在水平方向和垂直方向上采用了不同的權重,更加重視鄰近像素的信息。

邊緣檢測的靈敏度

  • 沙爾算子:由于其權重較為均勻,它對圖像的邊緣變化較為敏感,但可能對噪聲的反應也較強,因此邊緣檢測的結果可能不如索貝爾算子清晰。

  • 索貝爾算子:由于其加權方式更加注重中心像素及其周圍像素的梯度變化,索貝爾算子在噪聲較多的情況下能提供更穩定和清晰的邊緣檢測結果。

應用場景

  • 沙爾算子:適用于較為干凈的圖像(低噪聲環境),由于其結構簡單,計算開銷較小。

  • 索貝爾算子:在噪聲較多或需要更精確邊緣檢測的圖像處理中,索貝爾算子表現更好,常用于實際應用中。

import cv2
# 讀取原圖
# 使用 OpenCV 讀取圖像,返回一個 BGR 格式的圖像
img = cv2.imread('./images/waiguoren.png')# 將原圖轉換為灰度圖
# 灰度圖是處理圖像時常用的格式,它可以去除顏色信息,只保留亮度信息
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 計算水平方向的梯度
# 通過索貝爾算子計算水平方向上的變化量,即圖像在 X 軸方向上的梯度
grad_x = cv2.Scharr(gray_img, cv2.CV_64F, 1, 0)# 計算垂直方向的梯度
# 同樣地,計算圖像在 Y 軸方向上的變化量,即圖像在 Y 軸方向上的梯度
grad_y = cv2.Scharr(gray_img, cv2.CV_64F, 0, 1)# 計算梯度幅度
# 通過計算水平方向和垂直方向的梯度值的平方和,再開根號,得到每個像素點的梯度幅度
# 這是用來提取邊緣信息的,邊緣區域的梯度幅度通常較大
magnitude = cv2.magnitude(grad_x, grad_y)
magnitude = cv2.normalize(magnitude, None, 0, 255, cv2.NORM_MINMAX, cv2.CV_8U)cv2.imshow('img', img)
cv2.imshow('gray_img', gray_img)
cv2.imshow('magnitude', magnitude)
cv2.waitKey(0)
cv2.destroyAllWindows()

四、高通濾波——拉普拉斯算子

????????拉普拉斯算子是一種二階微分算子。它的作用是計算圖像中像素值的變化率,從而識別圖像 中的邊緣。

不再以x和y的方向計算,而是以圓方向計算變化率。因此不需要Gx+Gy。

特點

  • 邊緣檢測:拉普拉斯算子常常用作邊緣檢測的基礎方法之一。

  • 圖像增強:拉普拉斯算子有時被用來增強圖像細節,去除模糊部分,提高圖像的清晰度。

高通濾波器的對比與應用場景

算子

特點

適用場景

索貝爾

結合一階導數,能檢測水平和垂直邊緣

邊緣檢測、特征提取

沙爾

索貝爾的改進版,適合處理高頻變化區域,精度更高

精細邊緣檢測

拉普拉斯

二階導數算子,檢測方向無關的邊緣,靈敏度高

圖像銳化、邊緣增強

?

import cv2
import os# 圖片文件夾位置
dog_directory = "./dog"# 遍歷文件夾中的所有圖片
image_paths = []
for filename in os.listdir(dog_directory):# 獲取文件完整路徑filepath = os.path.join(dog_directory, filename)# 檢查文件是否為圖片格式if not filename.lower().endswith(('.png', '.jpg', '.jpeg')):continue# 讀取圖片img = cv2.imread(filepath)# 將圖像轉灰度gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)#  應用拉普拉斯算子,計算圖像方差laplacian = cv2.Laplacian(gray_img, cv2.CV_64F)variance  = laplacian.var()print(f"Image: {filename}, Variance: {variance}")if variance < 300:image_paths.append(filepath)image_paths
Image: 1.png, Variance: 2113.8365566209127
Image: 2.png, Variance: 248.99712459101005
Image: 3.png, Variance: 1420.862992791666
Image: 4.png, Variance: 153.0638792511676
['./dog\\2.png', './dog\\4.png']

五、圖像浮雕與特效處理

????????圖像浮雕特效是仿造浮雕藝術而衍生的處理,它將要呈現的圖像突起于石頭表面,根據凹凸程度不同形成三維的立體效果。Python繪制浮雕圖像是通過勾畫圖像的輪廓,并降低周圍的像素值,從而產生一張具有立體感的浮雕效果圖。

5.1、圖像浮雕

dst = filter2D(src, ddepth, kernel[, dst[, anchor[, delta[, borderType]]]])

參數:

  • src表示輸入圖像
  • ddepth表示目標圖像所需的深度
  • kernel表示卷積核,一個單通道浮點型矩陣

import cv2
import numpy as np
img=cv2.imread('./images/waiguoren.png')# 轉為灰度圖像
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 浮雕
# 第一個參數 輸入圖像
# 第二個參數 -1 表示輸出圖像與輸入圖像具有相同的深度
# 第三個參數 卷積核,浮雕卷積核
# 第四個參數 dst 輸出圖像,默認是 None
embossed_img = cv2.filter2D(gray_img, -1, np.array([[-2, -1, 0], [-1, 1, 1], [0, 1, 2]]), dst=gray_img)# 顯示結果
cv2.imshow('img', img)
cv2.imshow('img_gray', img_gray)
cv2.imshow('embossed_img', embossed_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

5.2、油畫效果

????????油畫效果使圖像看起來像是由油畫筆刷繪制的,通常使用平滑化和顏色混合來實現。

cv2.xphoto.oilPainting(src, (size, dyn_ratio))

參數:

  • src:輸入圖像。

  • (size, dyn_ratio):大小和動態比例,影響油畫效果的強度和樣式。

import cv2
import numpy as np
img=cv2.imread('./images/waiguoren.png')# 轉為灰度圖像
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 油畫效果
oil_img = cv2.xphoto.oilPainting(img,7,20)# 顯示結果
cv2.imshow('img', img)
cv2.imshow('img_gray', img_gray)
cv2.imshow('oil_img', oil_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

5.3、彩色映射

????????彩色映射通過將圖像的灰度值映射到不同的顏色范圍,創造不同的視覺效果。例如,可以使用偽彩色來增強圖像的表現力。

dst = cv2.applyColorMap(src, colormap)

參數:

  • src:灰度圖像。

  • colormap:選擇的顏色映射類型。

import cv2
import numpy as np
img=cv2.imread('./images/waiguoren.png')# 轉為灰度圖像
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 彩色映射
color_img = cv2.applyColorMap(img, cv2.COLORMAP_HSV)# 顯示結果
cv2.imshow('img', img)
cv2.imshow('img_gray', img_gray)
cv2.imshow('color_img', color_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

5.4、鏡像效果

????????鏡像效果是通過將圖像進行水平或垂直翻轉,來創建對稱圖像的一種方式。

dst = cv2.flip(src, flipCode)

參數:

  • src:輸入圖像。

  • flipCode:翻轉類型。1表示水平翻轉,0表示垂直翻轉,-1表示水平和垂直都翻轉。

import cv2
import numpy as np
img=cv2.imread('./images/waiguoren.png')# 轉為灰度圖像
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 鏡像
flip_img = cv2.flip(img,-1)# 顯示結果
cv2.imshow('img', img)
cv2.imshow('img_gray', img_gray)
cv2.imshow('flip_img', flip_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

5.5、油畫效果和浮雕結合

import cv2
import numpy as np
img=cv2.imread('./images/waiguoren.png')# 轉為灰度圖像
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 浮雕
embossed_img = cv2.filter2D(gray_img, -1, np.array([[-2, -1, 0], [-1, 1, 1], [0, 1, 2]]), dst=gray_img)
# 油畫
combined = cv2.xphoto.oilPainting(embossed_img,7,20)# 顯示結果
cv2.imshow('img', img)
cv2.imshow('img_gray', img_gray)
cv2.imshow('combined', combined)
cv2.waitKey(0)
cv2.destroyAllWindows()

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/87836.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/87836.shtml
英文地址,請注明出處:http://en.pswp.cn/web/87836.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

oracle 恢復

RECOVER DATABASE USING BACKUP CONTROLFILE “用備份的控制文件推動數據庫恢復”。-- 檢查控制文件記錄的當前SCN (V$DATABASE) SELECT CURRENT_SCN FROM V$DATABASE; -- 檢查數據文件頭SCN (V$DATAFILE_HEADER) SELECT FILE#, CHECKPOINT_CHANGE# FROM V$DATAFILE_HEADER;-…

京東商品詳情SKU數據采集的難點有哪些?

京東商品詳情 SKU 數據采集過程中&#xff0c;由于平臺的技術防護、數據結構特性及合規性要求&#xff0c;會面臨諸多難點&#xff0c;具體如下&#xff1a;一、反爬蟲機制的限制京東作為大型電商平臺&#xff0c;擁有成熟且嚴格的反爬蟲系統&#xff0c;這是采集時最核心的障礙…

修復手機液晶面板顯性橫向線性不良定位及相關液晶線路激光修復原理

摘要 手機液晶面板顯性橫向線性不良嚴重影響屏幕顯示效果&#xff0c;其產生與液晶線路斷路、短路或信號傳輸異常密切相關。精準定位線性不良區域是修復的關鍵前提&#xff0c;激光修復技術憑借高能量密度與非接觸特性&#xff0c;能夠有效修復相關液晶線路故障。本文分析顯性…

如何解決Spring Boot中@Valid對List校驗失效問題

在Spring Boot應用開發中&#xff0c;我們經常需要對傳入的請求參數進行校驗&#xff0c;以確保數據的合法性和安全性。然而&#xff0c;當我們嘗試對列表&#xff08;List&#xff09;類型的參數進行校驗時&#xff0c;可能會遇到校驗失效的問題。本文將詳細探討這一問題的失效…

云原生環境下部署大語言模型服務:以 DeepSeek 為例的實戰教程

&#x1f4dd;個人主頁&#x1f339;&#xff1a;一ge科研小菜雞-CSDN博客 &#x1f339;&#x1f339;期待您的關注 &#x1f339;&#x1f339; 一、引言 隨著 DeepSeek、Qwen、ChatGLM 等大語言模型&#xff08;LLM&#xff09;的開放與普及&#xff0c;企業將其私有化部署…

【Spring篇08】:理解自動裝配,從spring.factories到.imports剖析

文章目錄1. 自動化裝配的起點&#xff1a;SpringBootApplication2. 自動化裝配的核心機制&#xff1a;EnableAutoConfiguration 和 AutoConfigurationImportSelector3. 自動化配置的注冊方式&#xff1a;spring.factories 與 .imports3.1 早期版本&#xff1a;META-INF/spring.…

前置代理重構網絡訪問的「中轉站」

某跨境電商通過前置代理構建賬號隔離體系&#xff0c;將亞馬遜店鋪關聯風險降低85%&#xff1b;某企業利用前置代理過濾惡意流量&#xff0c;網絡攻擊攔截率提升70%。在復雜的網絡環境中&#xff0c;前置代理作為客戶端與目標服務器之間的「中間樞紐」&#xff0c;正成為跨境訪…

樂鑫代理商飛睿科技,2025年AI智能語音助手市場發展趨勢與樂鑫芯片解決方案分析

一、市場現狀與技術背景進入2025年&#xff0c;AI智能語音助手市場呈現出爆發性增長態勢。全球AI應用訪問量從2024年初的36億次激增至76億次&#xff0c;增幅高達111%&#xff0c;其中語音交互類產品貢獻了顯著份額。在企業市場&#xff0c;語音技術已從“增值服務”轉變為不可…

App爬蟲工具篇-Appium安裝

之前在另外一篇文章App爬蟲工具篇-mitmproxy簡單介紹了利用mitmproxy進行接口攔截來獲取接口數據。但是很多軟件現在都會對相關接口進行加密。如以下我用mitmproxy攔截到接口流量樣例: {"raw_data": "EXMcAezXPq/MRC1m2mJIG/EQLisaahfpjPTj9svrxe6yLI8mZTvW4+…

容器與 Kubernetes 基本概念與架構

文章目錄 1. 典型環境層次結構2. Kubernetes 生態三大類2.1 核心組件2.2 集群管理工具2.3 生態輔助工具2.4 資源管理關系 3. Docker 容器技術與實踐3.1 鏡像拉取加速3.2 認證與登錄3.3 常用命令3.4 存儲掛載方式對比3.5 docker-compose 啟動3.6 容器化應用部署示例 4. kind 快速…

Ajax和Axios的初步學習

Ajax 一、什么是 Ajax&#xff1f; Ajax (Asynchronous JavaScript and XML) 是一種無需重新加載整個網頁的情況下&#xff0c;能夠更新部分網頁的技術。通過在后臺與服務器進行少量數據交換&#xff0c;Ajax 可以使網頁實現異步更新。 主要特性&#xff1a; 異步性 (Asynch…

C#指針:解鎖內存操作的底層密碼

C#指針&#xff1a;解鎖內存操作的底層密碼 在 C# 的世界里&#xff0c;我們習慣了托管代碼帶來的安全與便捷 —— 垃圾回收器自動管理內存&#xff0c;類型系統嚴格檢查數據操作&#xff0c;就像在精心維護的花園中漫步&#xff0c;無需擔心雜草與荊棘。但當性能成為關鍵瓶頸…

永洪科技榮獲商業智能品牌影響力獎,全力打造”AI+決策”引擎

近日&#xff0c;在備受業界矚目的年度商業智能領域權威評選中&#xff0c;永洪科技憑借卓越的技術實力、深度的客戶價值創造能力與前瞻的行業洞察&#xff0c;成功斬獲“2025商業智能品牌影響力獎”。這一獎項不僅是對永洪科技市場地位與品牌聲量的高度認可&#xff0c;更是對…

在SSM+vue項目中上傳表單數據和文件

從前端向后端發送multipart/form-data 類型數據&#xff08;主要用于文件上傳或表單提交&#xff09;如發送如下信息&#xff1a;前端代碼vue文件&#xff1a;&#xff08;配置了服務器代理&#xff09;<template><div class"content"><el-form :mode…

Python 機器學習核心入門與實戰進階 Day 1 - 分類 vs 回歸

? 今日目標 理解分類&#xff08;Classification&#xff09;與回歸&#xff08;Regression&#xff09;的本質區別掌握兩種任務的典型使用場景學會根據任務類型選擇合適的模型了解每類模型對應的評估指標 &#x1f4d8; 一、監督學習的兩大任務類型 任務類型輸出結果典型問…

RPC--自定義注解注冊發布服務

自定義的三個注解1、RpcReference這個注解用于修飾類的某個字段&#xff0c;表示這個字段是遠程調用的引用下面詳細解釋下這個字段的定義Document表示這個注解應該被javadoc文檔工具記錄&#xff0c;生成API文檔時使用了該注解的地方會被顯示出來Retention表示這個注解的聲明周…

Web 3D可視化引擎HOOPS Communicator,高效賦能工業級應用開發!

在數字化轉型加速的今天&#xff0c;企業面臨著前所未有的挑戰——如何高效管理跨平臺的設計數據、提升團隊協作效率&#xff0c;并加快產品上市速度。HOOPS Communicator作為一款高性能的3D可視化與共享平臺&#xff0c;憑借其強大的兼容性、先進的3D渲染引擎和無縫的協作功能…

OceanBase數據庫遷移工具介紹和部署

OceanBase數據庫遷移工具介紹和部署核心組件遷移支持部署要求單節點部署查看日志OceanBase 遷移服務&#xff08;OceanBase Migration Service, OMS&#xff09;是OceanBase數據庫提供的一種支持同構或異構數據源與OceanBase數據庫之間進行數據交互的服務&#xff0c;具備在線遷…

棧與隊列:算法基礎的核心差異

理解棧和隊列的異同對打好算法基礎太重要了&#xff01;它們都是編程和算法中無處不在的線性數據結構&#xff0c;核心區別在于操作數據的順序。下面我來幫大家清晰梳理它們的異同點&#xff1a;一、相同點都是線性數據結構&#xff1a;數據元素之間邏輯上呈現“一個接一個”的…

HCIA-生成數協議(STP)

前言&#xff1a;本博客僅作記錄學習使用&#xff0c;部分圖片出自網絡&#xff0c;如有侵犯您的權益&#xff0c;請聯系刪除 ? 本篇筆記是根據B站上的視頻教程整理而成&#xff0c;感謝UP主的精彩講解&#xff01;如果需要了解更多細節&#xff0c;可以參考以下視頻&#xf…