日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

图像处理-skimage-滤波-分割

發(fā)布時(shí)間:2023/12/13 综合教程 38 生活家
生活随笔 收集整理的這篇文章主要介紹了 图像处理-skimage-滤波-分割 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

轉(zhuǎn)載鏈接:

https://www.cnblogs.com/wangxiaocvpr/p/11656589.html

圖像簡(jiǎn)單濾波

對(duì)圖像進(jìn)行濾波,可以有兩種效果:一種是平滑濾波,用來抑制噪聲;另一種是微分算子,可以用來檢測(cè)邊緣和特征提取。
skimage庫中通過filters模塊進(jìn)行濾波操作。
1、sobel算子
sobel算子可用來檢測(cè)邊緣
函數(shù)格式為:

None
from


2、roberts算子

roberts算子和sobel算子一樣,用于檢測(cè)邊緣
調(diào)用格式也是一樣的:

edges = filters.roberts(img)

3、scharr算子
功能同sobel,調(diào)用格式:

edges = filters.scharr(img)

4、prewitt算子
功能同sobel,調(diào)用格式:

edges = filters.prewitt(img)

5、canny算子
canny算子也是用于提取邊緣特征,但它不是放在filters模塊,而是放在feature模塊
函數(shù)格式:

skimage.feature.canny(image,sigma=1.0)

可以修改sigma的值來調(diào)整效果

from


從結(jié)果可以看出,sigma越小,邊緣線條越細(xì)小。
6、gabor濾波
gabor濾波可用來進(jìn)行邊緣檢測(cè)和紋理特征提取。
函數(shù)調(diào)用格式:

skimage

通過修改frequency值來調(diào)整濾波效果,返回一對(duì)邊緣結(jié)果,一個(gè)是用真實(shí)濾波核的濾波結(jié)果,一個(gè)是想象的濾波核的濾波結(jié)果。

from


以上為frequency=0.6的結(jié)果圖。


以上為frequency=0.1的結(jié)果圖

7、gaussian濾波
多維的濾波器,是一種平滑濾波,可以消除高斯噪聲。
調(diào)用函數(shù)為:

skimage

通過調(diào)節(jié)sigma的值來調(diào)整濾波效果

from


可見sigma越大,過濾后的圖像越模糊
8.median
中值濾波,一種平滑濾波,可以消除噪聲。
需要用skimage.morphology模塊來設(shè)置濾波器的形狀。

from


從結(jié)果可以看出,濾波器越大,圖像越模糊。

9、水平、垂直邊緣檢測(cè)

上邊所舉的例子都是進(jìn)行全部邊緣檢測(cè),有些時(shí)候我們只需要檢測(cè)水平邊緣,或垂直邊緣,就可用下面的方法。

水平邊緣檢測(cè):sobel_h, prewitt_h, scharr_h
垂直邊緣檢測(cè): sobel_v, prewitt_v, scharr_v
from


上邊左圖為檢測(cè)出的水平邊緣,右圖為檢測(cè)出的垂直邊緣。

10、交叉邊緣檢測(cè)

可使用Roberts的十字交叉核來進(jìn)行過濾,以達(dá)到檢測(cè)交叉邊緣的目的。這些交叉邊緣實(shí)際上是梯度在某個(gè)方向上的一個(gè)分量。
其中一個(gè)核:

0 1
-1 0

對(duì)應(yīng)的函數(shù):

roberts_neg_diag(image)

例:

from


另外一個(gè)核:

1 0
0 -1

對(duì)應(yīng)函數(shù)為:

roberts_pos_diag(image)
from



圖像自動(dòng)閾值分割

圖像閾值分割是一種廣泛應(yīng)用的分割技術(shù),利用圖像中要提取的目標(biāo)區(qū)域與其背景在灰度特性上的差異,把圖像看作具有不同灰度級(jí)的兩類區(qū)域(目標(biāo)區(qū)域和背景區(qū)域)的組合,選取一個(gè)比較合理的閾值,以確定圖像中每個(gè)像素點(diǎn)應(yīng)該屬于目標(biāo)區(qū)域還是背景區(qū)域,從而產(chǎn)生相應(yīng)的二值圖像。
在skimage庫中,閾值分割的功能是放在filters模塊中。
我們可以手動(dòng)指定一個(gè)閾值,從而來實(shí)現(xiàn)分割。也可以讓系統(tǒng)自動(dòng)生成一個(gè)閾值,下面幾種方法就是用來自動(dòng)生成閾值。

1、threshold_otsu
基于Otsu的閾值分割方法,函數(shù)調(diào)用格式:

skimage.filters.threshold_otsu(image, nbins=256)

參數(shù)image是指灰度圖像,返回一個(gè)閾值。

from

返回閾值為87,根據(jù)87進(jìn)行分割得下圖:


2、threshold_yen
使用方法同上:

thresh = filters.threshold_yen(image)

返回閾值為198,分割如下圖:


3、threshold_li
使用方法同上:

thresh = filters.threshold_li(image)

返回閾值64.5,分割如下圖:


4、threshold_isodata
閾值計(jì)算方法:

=

使用方法同上:

thresh = filters.threshold_isodata(image)

返回閾值為87,因此分割效果和threshold_otsu一樣。
5、threshold_adaptive
調(diào)用函數(shù)為:

'gaussian'

block_size: 塊大小,指當(dāng)前像素的相鄰區(qū)域大小,一般是奇數(shù)(如3,5,7。。。)
method: 用來確定自適應(yīng)閾值的方法,有'mean', 'generic', 'gaussian' 和 'median'。省略時(shí)默認(rèn)為gaussian
該函數(shù)直接訪問一個(gè)閾值后的圖像,而不是閾值。

from


大家可以修改block_size的大小和method值來查看更多的效果。如:

'mean'

兩種效果如下:



基本圖形的繪制

圖形包括線條、圓形、橢圓形、多邊形等。
在skimage包中,繪制圖形用的是draw模塊,不要和繪制圖像搞混了。
1、畫線條
函數(shù)調(diào)用格式為:

skimage

r1,r2: 開始點(diǎn)的行數(shù)和結(jié)束點(diǎn)的行數(shù)
c1,c2: 開始點(diǎn)的列數(shù)和結(jié)束點(diǎn)的列數(shù)
返回當(dāng)前繪制圖形上所有點(diǎn)的坐標(biāo),如:

rr, cc =draw.line(1, 5, 8, 2)

表示從(1,5)到(8,2)連一條線,返回線上所有的像素點(diǎn)坐標(biāo)[rr,cc]

from


如果想畫其它顏色的線條,則可以使用set_color()函數(shù),格式為:

skimage

例:

draw

則繪制紅色線條。

from


2、畫圓
函數(shù)格式:

skimage

cy和cx表示圓心點(diǎn),radius表示半徑

from


3、多邊形
函數(shù)格式:

skimage

Y為多邊形頂點(diǎn)的行集合,X為各頂點(diǎn)的列值集合。

from


我在此處只設(shè)置了四個(gè)頂點(diǎn),因此是個(gè)四邊形。
4、橢圓
格式:

skimage

cy和cx為中心點(diǎn)坐標(biāo),yradius和xradius代表長(zhǎng)短軸。

from


5、貝塞兒曲線
格式:

skimage

y1,x1表示第一個(gè)控制點(diǎn)坐標(biāo)
y2,x2表示第二個(gè)控制點(diǎn)坐標(biāo)
y3,x3表示第三個(gè)控制點(diǎn)坐標(biāo)
weight表示中間控制點(diǎn)的權(quán)重,用于控制曲線的彎曲度。

from


6、畫空心圓
和前面的畫圓是一樣的,只是前面是實(shí)心圓,而此處畫空心圓,只有邊框線。
格式:

skimage

yx,yc是圓心坐標(biāo),radius是半徑

from


7、空心橢圓
格式:

skimage

cy,cx表示圓心
yradius,xradius表示長(zhǎng)短軸

from



基本形態(tài)學(xué)濾波

對(duì)圖像進(jìn)行形態(tài)學(xué)變換。變換對(duì)象一般為灰度圖或二值圖,功能函數(shù)放在morphology子模塊內(nèi)。

1、膨脹(dilation)

原理:一般對(duì)二值圖像進(jìn)行操作。找到像素值為1的點(diǎn),將它的鄰近像素點(diǎn)都設(shè)置成這個(gè)值。1值表示白,0值表示黑,因此膨脹操作可以擴(kuò)大白色值范圍,壓縮黑色值范圍。一般用來擴(kuò)充邊緣或填充小的孔洞。
功能函數(shù):

None

selem表示結(jié)構(gòu)元素,用于設(shè)定局部區(qū)域的形狀和大小。

from

分別用邊長(zhǎng)為5或15的正方形濾波器對(duì)棋盤圖片進(jìn)行膨脹操作,結(jié)果如下:


可見濾波器的大小,對(duì)操作結(jié)果的影響非常大。一般設(shè)置為奇數(shù)。
除了正方形的濾波器外,濾波器的形狀還有一些,現(xiàn)列舉如下:

morphology

注意,如果處理圖像為二值圖像(只有0和1兩個(gè)值),則可以調(diào)用:

None

用此函數(shù)比處理灰度圖像要快。

2、腐蝕(erosion)

函數(shù):

None

selem表示結(jié)構(gòu)元素,用于設(shè)定局部區(qū)域的形狀和大小。
和膨脹相反的操作,將0值擴(kuò)充到鄰近像素。擴(kuò)大黑色部分,減小白色部分。可用來提取骨干信息,去掉毛刺,去掉孤立的像素。

from


注意,如果處理圖像為二值圖像(只有0和1兩個(gè)值),則可以調(diào)用:

None

用此函數(shù)比處理灰度圖像要快。
3、開運(yùn)算(opening)
函數(shù):

None

selem表示結(jié)構(gòu)元素,用于設(shè)定局部區(qū)域的形狀和大小。
先腐蝕再膨脹,可以消除小物體或小斑塊。

from


注意,如果處理圖像為二值圖像(只有0和1兩個(gè)值),則可以調(diào)用:

None

用此函數(shù)比處理灰度圖像要快。
4、閉運(yùn)算(closing)
函數(shù):

None

selem表示結(jié)構(gòu)元素,用于設(shè)定局部區(qū)域的形狀和大小。
先膨脹再腐蝕,可用來填充孔洞。

from


注意,如果處理圖像為二值圖像(只有0和1兩個(gè)值),則可以調(diào)用:

None

用此函數(shù)比處理灰度圖像要快。
5、白帽(white-tophat)
函數(shù):

None

selem表示結(jié)構(gòu)元素,用于設(shè)定局部區(qū)域的形狀和大小。
將原圖像減去它的開運(yùn)算值,返回比結(jié)構(gòu)化元素小的白點(diǎn)

from


6、黑帽(black-tophat)
函數(shù):

None

selem表示結(jié)構(gòu)元素,用于設(shè)定局部區(qū)域的形狀和大小。
將原圖像減去它的閉運(yùn)算值,返回比結(jié)構(gòu)化元素小的黑點(diǎn),且將這些黑點(diǎn)反色。

from



高級(jí)濾波

本文提供更多更強(qiáng)大的濾波方法,這些方法放在filters.rank子模塊內(nèi)。
這些方法需要用戶自己設(shè)定濾波器的形狀和大小,因此需要導(dǎo)入morphology模塊來設(shè)定。

1、autolevel
這個(gè)詞在photoshop里面翻譯成自動(dòng)色階,用局部直方圖來對(duì)圖片進(jìn)行濾波分級(jí)。
該濾波器局部地拉伸灰度像素值的直方圖,以覆蓋整個(gè)像素值范圍。
格式:

skimage

selem表示結(jié)構(gòu)化元素,用于設(shè)定濾波器。

from


2、bottomhat 與 tophat
bottomhat: 此濾波器先計(jì)算圖像的形態(tài)學(xué)閉運(yùn)算,然后用原圖像減去運(yùn)算的結(jié)果值,有點(diǎn)像黑帽操作。

bophat: 此濾波器先計(jì)算圖像的形態(tài)學(xué)開運(yùn)算,然后用原圖像減去運(yùn)算的結(jié)果值,有點(diǎn)像白帽操作。
格式:

skimage

selem表示結(jié)構(gòu)化元素,用于設(shè)定濾波器。
下面是bottomhat濾波的例子:

from


3、enhance_contrast

對(duì)比度增強(qiáng)。求出局部區(qū)域的最大值和最小值,然后看當(dāng)前點(diǎn)像素值最接近最大值還是最小值,然后替換為最大值或最小值。
函數(shù):

 enhance_contrast(image, selem)

selem表示結(jié)構(gòu)化元素,用于設(shè)定濾波器。

from


4、entropy

求局部熵,熵是使用基為2的對(duì)數(shù)運(yùn)算出來的。該函數(shù)將局部區(qū)域的灰度值分布進(jìn)行二進(jìn)制編碼,返回編碼的最小值。
函數(shù)格式:

entropy(image, selem)

selem表示結(jié)構(gòu)化元素,用于設(shè)定濾波器。

from


5、equalize
均衡化濾波。利用局部直方圖對(duì)圖像進(jìn)行均衡化濾波。
函數(shù)格式:

equalize(image, selem)

selem表示結(jié)構(gòu)化元素,用于設(shè)定濾波器。

from


6、gradient
返回圖像的局部梯度值(如:最大值-最小值),用此梯度值代替區(qū)域內(nèi)所有像素值。
函數(shù)格式:

gradient(image, selem)

selem表示結(jié)構(gòu)化元素,用于設(shè)定濾波器。

from


7、其它濾波器
濾波方式很多,下面不再一一詳細(xì)講解,僅給出核心代碼,所有的函數(shù)調(diào)用方式都是一樣的。
最大值濾波器(maximum):返回圖像局部區(qū)域的最大值,用此最大值代替該區(qū)域內(nèi)所有像素值。

dst =sfr.maximum(img, disk(5))

最小值濾波器(minimum):返回圖像局部區(qū)域內(nèi)的最小值,用此最小值取代該區(qū)域內(nèi)所有像素值。

dst =sfr.minimum(img, disk(5))

均值濾波器(mean) : 返回圖像局部區(qū)域內(nèi)的均值,用此均值取代該區(qū)域內(nèi)所有像素值。

dst =sfr.mean(img, disk(5))

中值濾波器(median): 返回圖像局部區(qū)域內(nèi)的中值,用此中值取代該區(qū)域內(nèi)所有像素值。

dst =sfr.median(img, disk(5))

莫代爾濾波器(modal) : 返回圖像局部區(qū)域內(nèi)的modal值,用此值取代該區(qū)域內(nèi)所有像素值。

dst =sfr.modal(img, disk(5))

otsu閾值濾波(otsu): 返回圖像局部區(qū)域內(nèi)的otsu閾值,用此值取代該區(qū)域內(nèi)所有像素值。

dst =sfr.otsu(img, disk(5))

閾值濾波(threshhold): 將圖像局部區(qū)域中的每個(gè)像素值與均值比較,大于則賦值為1,小于賦值為0,得到一個(gè)二值圖像。

dst =sfr.threshold(img, disk(5))

減均值濾波(subtract_mean): 將局部區(qū)域中的每一個(gè)像素,減去該區(qū)域中的均值。

dst =sfr.subtract_mean(img, disk(5))

求和濾波(sum) :求局部區(qū)域的像素總和,用此值取代該區(qū)域內(nèi)所有像素值。

dst =sfr.sum(img, disk(5))

總結(jié)

以上是生活随笔為你收集整理的图像处理-skimage-滤波-分割的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。