一、skimage.measure文檔
skimage.measure文檔提供了許多函數,涵蓋了對圖片的測量、分析和處理。其中包括了圖片的基本屬性、直方圖、幾何變換、分割、重心計算、距離變換以及膨脹和腐蝕操作等。這些函數可以用於處理以及分析各種圖片。
示例:圖片分割
from skimage.measure import label import numpy as np # 生成隨機圖片數據 np.random.seed(1) img = np.random.randint(0, 3, size=(6, 6)) # 通過連通區域分割圖片 labels = label(img, connectivity=1) print(labels)
在這個示例中,我們使用了skimage.measure中的label函數,生成了一張6×6的隨機圖片,然後使用label函數對其進行了像素級別的分割操作。最終輸出了一個6×6的分割結果。
二、skimage.measure.block_reduce
skimage.measure.block_reduce函數可以用於對圖片進行塊狀降採樣。通過該函數對圖片進行塊狀降採樣可以減少圖片數據量,從而提高圖片處理的效率。
示例:圖片降採樣
from skimage.measure import block_reduce from skimage import data # 讀取示例圖片 image = data.camera() # 對圖片進行塊狀降採樣 block_size = (5, 5) image_reduced = block_reduce(image, block_size, np.mean) # 顯示原圖片和降採樣後的圖片 fig, axes = plt.subplots(ncols=2, sharex=True, sharey=True, figsize=(8, 4)) ax = axes.ravel() ax[0].imshow(image, cmap='gray') ax[0].set_title("Original image") ax[1].imshow(image_reduced, cmap='gray') ax[1].set_title("Block-reduced image ({}x{})".format(*block_size)) plt.tight_layout() plt.show()
在這個示例中,我們首先使用skimage庫中自帶的data函數讀入了一張範例圖片,然後通過block_reduce函數對圖片進行了塊狀降採樣,使用的塊的大小為5×5。最終輸出了原圖片和降採樣後的圖片。
三、skimage.measure.label
skimage.measure.label函數可以用於連通區域的創建、分析和處理。該函數可用於多種圖片應用場景,包括拐角檢測、移除圖像雜訊、識別圖形等等。在實際應用中,該函數常用於圖像分割、閾值分割和邊緣檢測等操作。
示例:使用label函數對手寫數字進行分割
from skimage.measure import label, regionprops import matplotlib.pyplot as plt from skimage import io # 讀入手寫數字圖片 image = io.imread('digits.png') # 圖片閾值化處理 thresh = 127 binary = image > thresh # 對二值化圖片進行連通區域分割 labeled = label(binary) # 可視化連通區域分割結果 fig, ax = plt.subplots(ncols=1, nrows=1, figsize=(8, 8)) ax.imshow(labeled, cmap=plt.cm.gray) # 遍歷分割結果,並輸出分割結果數目 regions = regionprops(labeled) print("Number of regions detected: %d" % len(regions))
在這個示例中,我們使用skimage庫中自帶的digits.png手寫數字圖片,進行了閾值化處理之後使用label函數對其進行了連通區域分割。最後輸出了分割後的數字區域數目。
四、skimage.measure圖像分析
skimage.measure庫提供了許多函數,可用於對圖像進行全局和局部的分析。常用的分析函數包括圖像灰度級別、圖像峰值、圖像對比度等全局分析函數以及圖像邊緣檢測、角點檢測和輪廓檢測等局部分析函數。
示例:計算一張手寫數字圖片的面積
from skimage import io from skimage.measure import regionprops, label # 讀入手寫數字圖片 image = io.imread('digits.png') # 圖片閾值化處理 thresh = 127 binary = image > thresh # 對二值化圖片進行連通區域分割 labeled = label(binary) # 遍歷分割結果,並輸出分割結果數目 regions = regionprops(labeled) print("Area of the first region detected: %d" % regions[0].area)
在這個示例中,我們使用skimage庫中自帶的digits.png手寫數字圖片,進行了閾值化處理之後使用label函數對其進行了連通區域分割。然後通過regionprops函數獲取所有區域的屬性信息,並輸出第一個區域的面積。
五、skimage.measure structure
skimage.measure.structure提供了幾個用於計算結構度量的函數。這些函數可以用於計算結構相似性、結構差異等度量。
示例:使用結構度量函數計算圖片相似度
from skimage import io, measure # 讀入兩張圖片 img1 = io.imread('img_1.jpg', as_gray=True) img2 = io.imread('img_2.jpg', as_gray=True) # 計算結構相似度 ssim = measure.compare_ssim(img1, img2) # 顯示計算結果 print("The Structural Similarity Index (SSIM) between the two images is: %s" % ssim)
在這個示例中,我們讀入了兩幅圖片img_1.jpg和img_2.jpg,然後利用structure中的compare_ssim函數進行圖片的結構相似度計算,並輸出結果。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/197522.html