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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

【Python】skimage模块

發布時間:2024/9/21 python 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Python】skimage模块 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

可以用來做圖像做處理的模塊有很多,不過對于使用python不熟悉,或者剛使用python做圖像處理的時候,經常不知道應該選擇使用哪些模塊。比如,scipy中misc和ndimage中都有相應的圖像處理函數,現在就介紹一下scikit-image模塊吧:

1)例圖:?

from skimage import datadata里面會有樣圖,如data.camera()是一張(512, 512)的圖;


2)濾波

from skimage import filters比如高斯濾波,filters.gaussian(camera, 1)

比如邊緣檢測:filters.sobel(camera)


3)文件讀取

from skimage import io

io.imread(filename),其中,filename也可以是URL地址;

io.imsave(path, img).


4)數據類型轉換

from skimage import img_as_float

camera_f = img_as_float(camera)將原圖uint8類型轉變成[-1, 1]之間的范圍;


5)顏色空間轉換

from skimage import color

color.rgb2hsvcolor.lab2rgb, etc.


關于圖像預處理和增強

6)局部濾波,如filters.sobel_h(img)


7)非局部濾波,如

rom skimage import exposure

中exposure.equalize_hist(img)做直方圖均衡;


8)數學形態變換

from skimage import morphology 具體圖形生成:比如morphology.diamond(1)生成菱形;

腐蝕操作:morphology.binary_erosion(img, selem=None)

selem表示結構元素,用于設定局部區域的形狀和大小。將0值擴充到鄰近像素。擴大黑色部分,減小白色部分。可用來提取骨干信息,去掉毛刺,去掉孤立的像素。

膨脹操作:morphology.binary)dilation(img, selem = None)

一般對二值圖像進行操作。找到像素值為1的點,將它的鄰近像素點都設置成這個值。1值表示白,0值表示黑,因此膨脹操作可以擴大白色值范圍,壓縮黑色值范圍。一般用來擴充邊緣或填充小的孔洞。

Opening: erosion + dilation

注:該操作也適用于非二值圖,即灰度圖,對應的是最小濾波

(scipy.ndimage.morphology同樣也有該操作)


9)圖像分割

基于直方圖分析的二值分割:(Otsu閾值法)如:val = filters.threshold(img)找到閾值,然后通過mask = img < val得到二值圖

圖像打標簽:對于分割后的圖像,可以給每一個區域打標簽,如

from skimage import measure all_labels = measure.label(blobs)

另外,scipy中也有相應操作;

水域分割算法(也叫分水嶺算法):?

from skimage.morphology import watershed from skimage.feature import peak_local_max from scipy import ndimage >>> distance = ndimage . distance_transform_edt ( image ) >>> local_maxi = peak_local_max ( distance , indices = False , footprint = np . ones (( 3 , 3 )), labels = image ) >>> markers = morphology . label ( local_maxi ) >>> labels_ws = watershed ( - distance , markers , mask = image )另一個 隨機walker分割from skimage import segmentation >>> #?Transform markers image so that 0-valued pixels are to >>> #?be labelled, and -1-valued pixels represent background >>> markers [ ~ image ] = - 1 >>> labels_rw = segmentation . random_walker ( image , markers )



10)測量區域屬性,如面積和周長

properties = measure.regionprops(labels_rw) >>> [ prop . area for prop in properties ] [770, 1168] >>> [ prop . perimeter for prop in properties ] [100.91..., 126.81...]


11)數據可視化和交互

matplotlib中提供了plt.imshow等函數,結合以上濾波、分割(segmentation.clear_border(mask))等使用

另外,skimage也提供顯示圖像的函數,不過也是基于matplotlib,貌似功能更強大:

from skimage import viewer >>> new_viewer = viewer . ImageViewer ( coins ) >>> new_viewer . show ()

For more interaction, plugins can be added to the viewer:

>>>>>> new_viewer = viewer.ImageViewer(coins) >>> from skimage.viewer.plugins import lineprofile>>> new_viewer += lineprofile.LineProfile() >>> new_viewer.show()


12)CV中的特征提取

from skimage import feature

不同角點特征:

from skimage.feature import corner_harris, corner_subpix, corner_peaks

//補充角點特征知識點

另外skimage.transform提供扭曲和仿射變換操作wrap和AffineTransform

總結

以上是生活随笔為你收集整理的【Python】skimage模块的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。