国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

python數(shù)字圖像處理基礎(chǔ)(四)——圖像平滑處理、形態(tài)學(xué)操作、圖像梯度

這篇具有很好參考價(jià)值的文章主要介紹了python數(shù)字圖像處理基礎(chǔ)(四)——圖像平滑處理、形態(tài)學(xué)操作、圖像梯度。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

圖像平滑處理(濾波操作)

讓有噪音點(diǎn)(圖像上顯得突兀的像素點(diǎn))的圖像變得更加自然順眼

1.均值濾波 blur()

根據(jù)核的大小(rowcol),每個(gè)像素值就等于以此像素為中心的周圍rowcol個(gè)像素的平均值。
核大一點(diǎn),顯然越平滑、模糊。

result = cv2.blur(img, (15, 15))

2.方框?yàn)V波 boxFilter()

normalize=true的時(shí)候,效果同均值濾波;normalize=false的時(shí)候,α=1,僅求和。

result1 = cv2.boxFilter(img, -1, (3,3), normalize=0)

result2 = cv2.boxFilter(img, -1, (6,6), normalize=1)

3.高斯濾波GaussianBlur()

原理為高斯分布(正態(tài)分布)
與均值濾波對(duì)比,其實(shí)還是利用周圍的元素,不過(guò)周圍每個(gè)元素的權(quán)重不同。
核寬度和高度必須是奇數(shù)。
讓臨近的像素具有更高的重要度,對(duì)周圍像素計(jì)算加權(quán)平均值,較近的像素具有較大的權(quán)重值。

result = cv2.GaussianBlur(img, (15, 15), 0)

注:(15, 15)表示高斯濾波器的長(zhǎng)和寬,0表示濾波器的標(biāo)準(zhǔn)差

4.中值濾波medianBlur()

非常適用于有椒鹽點(diǎn)的圖像
依據(jù)核大小,選取以某個(gè)像素為中心的那些像素的中位數(shù)作為本像素的值。
本濾波,核寬度核高度是相同的,只需要指明邊長(zhǎng)。

result = cv2.medianBlur(img, 3)


形態(tài)學(xué)操作morphology

使用卷積核

1.腐蝕操作

cv2.erode(img,kernel,iterations)

就像土壤侵蝕一樣,這個(gè)操作會(huì)把前景物體的邊界腐蝕掉(但是前景仍然是白色)。
卷積核沿著圖像滑動(dòng),如果與卷積核對(duì)應(yīng)的原圖像的所有像素值都是1,
那么中心元素就保持原來(lái)的像素值,否則就變?yōu)榱恪?/p>

  • 作用:去除白噪聲、斷開(kāi)兩個(gè)連在一塊的物體…
img = cv2.imread('j.png',0)
kernel = np.ones((5,5),np.uint8)  
erosion = cv2.erode(img,kernel,iterations = 1)

其中,

  • img 指需要腐蝕的圖
  • kernel 指腐蝕操作的內(nèi)核,默認(rèn)是一個(gè)簡(jiǎn)單的3X3矩陣,
    我們也可以利用getStructuringElement()函數(shù)指明它的形狀
  • iterations 指的是腐蝕次數(shù),省略是默認(rèn)為1
2.膨脹操作
cv2.dilate(img,kernel,iterations)
dilation = cv2.dilate(img,kernel,iterations = 1)

與腐蝕相反,與卷積核對(duì)應(yīng)的原圖像的像素值中只要有一個(gè)是1,中心元素的像素值就是1。
可以彌補(bǔ)腐蝕操作后的結(jié)果(填充被腐蝕的部分、連接兩個(gè)被分開(kāi)的物體…)

腐蝕是我們將“腐蝕”邊緣。 它的工作方式是使用滑塊(核)。
我們讓滑塊滑動(dòng),如果所有的像素是白色的,那么我們得到白色,否則是黑色。 這可能有助于消除一些白色噪音。
另一個(gè)版本是膨脹,它基本上是相反的:讓滑塊滑動(dòng),如果整個(gè)區(qū)域不是黑色的,就會(huì)轉(zhuǎn)換成白色。

3.開(kāi)運(yùn)算 cv2.morphologyEx()

先進(jìn)性腐蝕再進(jìn)行膨脹就叫做開(kāi)運(yùn)算。它被用來(lái)去除噪聲。

opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)

4.閉運(yùn)算 cv2.morphologyEx()

先膨脹再腐蝕。它經(jīng)常被用來(lái)填充前景物體中的小洞,或者前景物體上的小黑點(diǎn)。

closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)

5.梯度運(yùn)算

梯度 = 膨脹后的圖像 - 腐蝕后的圖像

gradient = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel)

6.禮帽與黑帽

禮帽 = 原始輸入 - 開(kāi)運(yùn)算結(jié)果

tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel)

黑帽 = 閉運(yùn)算結(jié)果 - 原始輸入

blackhat = cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel)

計(jì)算圖像梯度

梯度

圖像函數(shù)f(x,y)在點(diǎn)(x,y)的梯度是一個(gè)具有大小和方向的矢量,梯度的方向是函數(shù)f(x,y)變化最快的方向,當(dāng)圖像中存在邊緣時(shí),一定有較大的梯度值,相反,當(dāng)圖像中有比較平滑的部分時(shí),灰度值變化較小,則相應(yīng)的梯度也較小,圖像處理中把梯度的模簡(jiǎn)稱為梯度。

簡(jiǎn)單理解,一個(gè)圖像是一個(gè)函數(shù),梯度就是灰度值的變化率

圖像的梯度是多少?哪些地方有梯度、找出來(lái)。
相當(dāng)于邊緣檢測(cè)(在圖像中物體的邊緣像素點(diǎn)才有明顯的數(shù)值變化,即梯度)

1.Sobel算子

從右到左,從下到上
右邊減左邊,下邊減上邊
得到邊緣

dst = cv2.Sobel(src, ddepth, dx, dy, ksize)

其中,

  • ddepth 圖像的深度,通常為-1,或cv2.CV_64F表示負(fù)數(shù)
  • dx、dy 表示水平和豎直方向
  • ksize 是Sobel算子的大小,通常用33或55

注:cv2會(huì)默認(rèn)進(jìn)行截?cái)?,即像素點(diǎn)數(shù)值范圍為0-255,小于0的全為0,大于255為255
白到黑是正數(shù),黑到白就是負(fù)數(shù)了,所有的負(fù)數(shù)會(huì)被截?cái)?,?,即都是黑的
故為了左右兩側(cè)邊緣都能顯示,需要加上絕對(duì)值cv2.convertScaleAbs(),即

sobelx = cv2.Sobel(img, cv2.CV_64F, 1, 0, ksize=3)
sobelx = cv2.convertScaleAbs(sobely)

以上為求Gx,即dx=1,dy=0,下面求Gy

sobely = cv2.Sobel(img, cv2.CV_64F, 0, 1, ksize=3)
sobely = cv2.convertScaleAbs(sobely)

分別計(jì)算x和y,再求和

sobleXY = cv2.addWeighted(sobelx, 0.5, sobely, 0.5, 0)

注:兩個(gè)0.5是兩個(gè)圖像的比例權(quán)重,最后的0是偏置項(xiàng),一般為0

以上為一般步驟,即x、y分開(kāi)算再求和。若直接dx=1,dy=1一次算的話,效果不好。

2.Scharr算子

scharrx = cv2.Scharr(img,cv2.CV_64F, 1, 0)
scharry = cv2.Scharr(img,cv2.CV_64F, 0, 1)
scharrx = cv2.convertScaleAbs(scharrx)
scharry = cv2.convertScaleAbs(scharry)
scharrxy = cv.addWeighted(scharrx, 0.5, scharry, 0.5)

其中,

  • scharrx = cv2.Scharr(img, cv2.CV_64F, 1, 0): 這一行對(duì)輸入圖像 img 沿著x軸應(yīng)用Scharr算子。Scharr算子是一種用于邊緣檢測(cè)的卷積濾波器。
  • scharry = cv2.Scharr(img, cv2.CV_64F, 0, 1): 這一行對(duì)輸入圖像 img 沿著y軸應(yīng)用Scharr算子。
  • scharrx = cv2.convertScaleAbs(scharrx): 將 scharrx 轉(zhuǎn)換為無(wú)符號(hào)整數(shù)類型。這是因?yàn)镾charr算子的計(jì)算結(jié)果可能包含負(fù)值,而轉(zhuǎn)換為無(wú)符號(hào)整數(shù)可以保留正數(shù)部分。
  • scharry = cv2.convertScaleAbs(scharry): 將 scharry 轉(zhuǎn)換為無(wú)符號(hào)整數(shù)類型。
  • scharrxy = cv.addWeighted(scharrx, 0.5, scharry, 0.5): 使用 cv.addWeighted 函數(shù)將經(jīng)過(guò)Scharr算子處理的x方向和y方向的圖像疊加起來(lái),創(chuàng)建一個(gè)新的圖像 scharrxy。這里權(quán)重分別為0.5,表示對(duì)兩個(gè)方向的處理結(jié)果進(jìn)行平均。

3.laplacian算子

對(duì)像素點(diǎn)數(shù)值變化更敏感,也就意味著對(duì)圖像上的噪音點(diǎn)敏感,容易認(rèn)為是邊緣。
單獨(dú)使用效果不好。

Laplacian = cv2.Laplacian(img,cv2.CV_64F)
laplacian = cv2.convertScaleAbs(laplacian)
  • scharr最深刻,然后soble,laplacian最淺。算子的核不同。

  • 這里舉一個(gè)簡(jiǎn)單的例子:
import cv2
import numpy as np
from matplotlib import pyplot as plt

# 讀取圖像
img = cv2.imread('./image/car1.jpg', cv2.IMREAD_GRAYSCALE)

# 進(jìn)行形態(tài)學(xué)膨脹操作
kernel = np.ones((5,5), np.uint8)  # 5x5 的卷積核
dilation = cv2.dilate(img, kernel, iterations=1)

# 進(jìn)行形態(tài)學(xué)腐蝕操作
erosion = cv2.erode(img, kernel, iterations=1)

# 顯示原始圖像、膨脹和腐蝕的結(jié)果
plt.subplot(131), plt.imshow(img, cmap='gray'), plt.title('Original Image')
plt.subplot(132), plt.imshow(dilation, cmap='gray'), plt.title('Dilation')
plt.subplot(133), plt.imshow(erosion, cmap='gray'), plt.title('Erosion')
plt.show()

# 進(jìn)行邊緣檢測(cè)(使用Sobel算子)
sobelx = cv2.Sobel(img, cv2.CV_64F, 1, 0, ksize=5)
sobely = cv2.Sobel(img, cv2.CV_64F, 0, 1, ksize=5)
edges = cv2.magnitude(sobelx, sobely)

# 顯示邊緣檢測(cè)結(jié)果
plt.subplot(121), plt.imshow(img, cmap='gray'), plt.title('Original Image')
plt.subplot(122), plt.imshow(edges, cmap='gray'), plt.title('Edge Detection (Sobel)')
plt.show()

結(jié)果如下:

python數(shù)字圖像處理基礎(chǔ)(四)——圖像平滑處理、形態(tài)學(xué)操作、圖像梯度,數(shù)字圖像處理,python,計(jì)算機(jī)視覺(jué),opencv
python數(shù)字圖像處理基礎(chǔ)(四)——圖像平滑處理、形態(tài)學(xué)操作、圖像梯度,數(shù)字圖像處理,python,計(jì)算機(jī)視覺(jué),opencv文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-800643.html


到了這里,關(guān)于python數(shù)字圖像處理基礎(chǔ)(四)——圖像平滑處理、形態(tài)學(xué)操作、圖像梯度的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 數(shù)字圖像處理|圖像的平滑和銳化

    數(shù)字圖像處理|圖像的平滑和銳化

    ? 彩色圖像平滑是一種常見(jiàn)的圖像處理技術(shù),旨在減少圖像中的噪聲和細(xì)節(jié),使圖像更加平滑和連續(xù)。在彩色圖像中每個(gè)像素由紅、綠、藍(lán)三個(gè)通道的值組成,因此彩色圖像平滑需要對(duì)每個(gè)通道分別進(jìn)行處理。常用的彩色圖像平滑方法包括均值濾波、高斯濾波、中值濾波等。

    2024年02月08日
    瀏覽(28)
  • 數(shù)字圖像處理 - 形態(tài)學(xué)算法 - 顆粒劃分 - 岡薩雷斯第三版 - 9.36

    數(shù)字圖像處理 - 形態(tài)學(xué)算法 - 顆粒劃分 - 岡薩雷斯第三版 - 9.36

    形態(tài)學(xué)算法 - 顆粒分割 項(xiàng)目地址:https://github.com/LetMeFly666/MorphologicalAlgorithm_ParticleSegmentation 在線文檔: https://maps.letmefly.xyz 顯微應(yīng)用中一個(gè)預(yù)處理步驟是從兩組或更多組重疊的類似顆粒(見(jiàn)右圖)中分離出單個(gè)獨(dú)立的一種顆粒。假設(shè)所有顆粒的大小相同,提出一種產(chǎn)生3幅圖

    2024年02月04日
    瀏覽(44)
  • 圖像處理基礎(chǔ)篇-形態(tài)學(xué)處理-邊緣檢測(cè)(matlab仿真與圖像處理系列第4期)

    圖像處理方面的老師,第一天學(xué)習(xí)以下內(nèi)容和代碼: 圖像讀取和顯示:在Matlab中,可以使用imread函數(shù)讀取圖像,并使用imshow函數(shù)顯示圖像。以下是一個(gè)簡(jiǎn)單的示例代碼: 圖像濾波:濾波是圖像處理中常用的一種技術(shù),可以用來(lái)去除噪聲、平滑圖像等。以下是一些常見(jiàn)的濾波

    2024年02月11日
    瀏覽(17)
  • 【C++】【圖像處理】形態(tài)學(xué)處理(腐蝕、膨脹)算法解析(以.raw格式的圖像為基礎(chǔ)進(jìn)行圖像處理、gray levels:256)

    ? ? 總結(jié) 針對(duì)處理二值圖圖像時(shí),腐蝕或膨脹算法的核心: 1、確定該點(diǎn)(假設(shè)為A點(diǎn))的灰度級(jí),是0還是255; 2、遍歷以該點(diǎn)為中心的3x3的鄰域,獲取灰度級(jí)等于0或者等于255的像素點(diǎn)個(gè)數(shù),使用 flag 變量記錄; 3、當(dāng) flag 大于設(shè)定的數(shù)值時(shí),則A點(diǎn)的灰度級(jí)將被賦值為0或者

    2024年02月05日
    瀏覽(21)
  • 簡(jiǎn)要介紹 | 基于Python的圖像形態(tài)學(xué)處理概述

    簡(jiǎn)要介紹 | 基于Python的圖像形態(tài)學(xué)處理概述

    注1:本文系“簡(jiǎn)要介紹”系列之一,僅從概念上對(duì)基于Python的圖像形態(tài)學(xué)處理進(jìn)行非常簡(jiǎn)要的介紹,不適合用于深入和詳細(xì)的了解。 Digital terrain models from airborne laser scanning for the automatic extraction of natural and anthropogenic linear structures In: Geomorphological Mapping: a professional handbook of

    2024年02月10日
    瀏覽(19)
  • OpenCV(圖像處理)-基于Python-形態(tài)學(xué)處理-開(kāi)運(yùn)算、閉運(yùn)算、頂帽、黑帽運(yùn)算

    OpenCV(圖像處理)-基于Python-形態(tài)學(xué)處理-開(kāi)運(yùn)算、閉運(yùn)算、頂帽、黑帽運(yùn)算

    OpenCV形態(tài)學(xué)是一種基于OpenCV庫(kù)的數(shù)字圖像處理技術(shù),主要用于處理圖像的形狀、結(jié)構(gòu)和空間關(guān)系。它包括一系列圖像處理工具和算法,包括膨脹、腐蝕、開(kāi)運(yùn)算、閉運(yùn)算、形態(tài)學(xué)梯度、頂帽、黑帽等。 通過(guò)對(duì)圖像進(jìn)行形態(tài)學(xué)操作可以實(shí)現(xiàn)一些重要的圖像處理任務(wù),比如去除噪

    2024年02月09日
    瀏覽(23)
  • Python-OpenCV中的圖像處理-形態(tài)學(xué)轉(zhuǎn)換

    Python-OpenCV中的圖像處理-形態(tài)學(xué)轉(zhuǎn)換

    形態(tài)學(xué)操作:腐蝕,膨脹,開(kāi)運(yùn)算,閉運(yùn)算,形態(tài)學(xué)梯度,禮帽,黑帽等 主要涉及函數(shù):cv2.erode(), cv2.dilate(), cv2.morphologyEx() 原理:形態(tài)學(xué)操作是根據(jù)圖像形狀進(jìn)行的簡(jiǎn)單操作。一般情況下對(duì)二值化圖像進(jìn)行的操作。需要輸入兩個(gè)參數(shù),一個(gè)是原始圖像,第二個(gè)被稱為結(jié)構(gòu)化

    2024年02月13日
    瀏覽(24)
  • python數(shù)字圖像處理基礎(chǔ)(九)——特征匹配

    python數(shù)字圖像處理基礎(chǔ)(九)——特征匹配

    蠻力匹配(ORB匹配) Brute-Force匹配非常簡(jiǎn)單,首先在第一幅圖像中選取一個(gè)關(guān)鍵點(diǎn)然后依次與第二幅圖像的每個(gè)關(guān)鍵點(diǎn)進(jìn)行(描述符)距離測(cè)試,最后返回距離最近的關(guān)鍵點(diǎn). 對(duì)于BF匹配器,首先我們必須使用**cv2.BFMatcher()**創(chuàng)建 BFMatcher 對(duì)象。它需要兩個(gè)可選的參數(shù): normTyp

    2024年01月19日
    瀏覽(93)
  • python數(shù)字圖像處理基礎(chǔ)(十)——背景建模

    python數(shù)字圖像處理基礎(chǔ)(十)——背景建模

    背景建模是計(jì)算機(jī)視覺(jué)和圖像處理中的一項(xiàng)關(guān)鍵技術(shù),用于提取視頻中的前景對(duì)象。在視頻監(jiān)控、運(yùn)動(dòng)檢測(cè)和行為分析等領(lǐng)域中,背景建模被廣泛應(yīng)用。其基本思想是通過(guò)對(duì)視頻序列中的像素進(jìn)行建模,找到視頻中的靜態(tài)背景,并將不同的像素標(biāo)記為背景和前景,從而使后續(xù)

    2024年01月19日
    瀏覽(26)
  • Python-OpenCV中的圖像處理-圖像平滑

    Python-OpenCV中的圖像處理-圖像平滑

    使用低通濾波器可以達(dá)到圖像模糊的目的。這對(duì)與去除噪音很有幫助。其實(shí)就是去除圖像中的高頻成分(比如:噪音,邊界)。所以邊界也會(huì)被模糊一點(diǎn)。(當(dāng)然,也有一些模糊技術(shù)不會(huì)模糊掉邊界)。 這是由一個(gè)歸一化卷積框完成的。他只是用卷積框覆蓋區(qū)域所有像素的平

    2024年02月13日
    瀏覽(23)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包