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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

【scipy 基础】--图像处理

發布時間:2023/11/16 windows 84 coder
生活随笔 收集整理的這篇文章主要介紹了 【scipy 基础】--图像处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

SciPy庫本身是針對科學計算而不是圖像處理的,只是圖像處理也包含了很多數學計算,
所以Scipy也提供了一個專門的模塊ndimage用于圖像處理。

ndimage模塊提供的功能包括輸入/輸出圖像、顯示圖像、基本操作(如裁剪、翻轉、旋轉等)、圖像過濾(如去噪、銳化等)、圖像分割、分類、特征提取以及注冊/配準等任務。

這個模塊支持多種圖像格式的讀取和寫入,使得對圖像的處理變得方便快捷。

1. 主要功能

雖然圖像處理不是Scipy的主要目的,Scipy中也提供了70多個各類圖像處理函數。

類別 主要函數 說明
過濾器 包含convolve等20多個函數 各類卷積和濾波相關的計算函數
傅立葉濾波器 包含fourier_ellipsoid等4個函數 多維橢球傅里葉,高斯傅里葉等濾波器
圖像插值 包含affine_transform等8個函數 圖像的反射變換,移動,旋轉等相關函數
圖像測量 包含center_of_mass等將近20個函數 計算圖像幾何特征的相關函數
形態學 包含binary_closing等20多個函數 圖像的侵蝕,膨脹,二元開閉運算等等

圖像處理底層函數專業性較強,下面結合圖片演示一些比較直觀的例子。

2. 邊緣檢測

圖像邊緣檢測在計算機視覺和圖像處理中是非常重要的任務之一。
邊緣是圖像中像素值發生顯著變化的地方,它可以提供有關圖像的重要信息,例如物體的輪廓、邊界等。

ndimage模塊中提供了多種算法來檢測邊緣,下面演示三種不同的邊緣檢測算法的效果:
(示例中所用的圖片是*上找的一個python logo

2.1. sobel算法

import matplotlib.pyplot as plt
import cv2
from scipy import ndimage

image = plt.imread("d:/share/python-logo.png")
# 圖像灰度化
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 使用索貝爾邊緣檢測算法
name = "sobel"
edges = ndimage.sobel(gray)

# 顯示原始圖像和邊緣檢測結果
fig, ax = plt.subplots(1, 3, figsize=(8, 4))
ax[0].imshow(image)
ax[0].set_title("原始圖像")
ax[1].imshow(gray, cmap="gray")
ax[1].set_title("灰度圖像")
ax[2].imshow(edges, cmap="gray")
ax[2].set_title("邊緣檢測({}算法)".format(name))
plt.show()

2.2. prewitt算法

代碼和上面的類似,不同的部分就下面兩行。

# 使用prewitt邊緣檢測算法
name = "prewitt"
edges = ndimage.prewitt(gray)

2.3. laplace算法

上面兩種算法的效果看上去很類似,laplace算法的結果看上去比上面兩種效果更好一些。

name = "laplace"
edges = ndimage.laplace(gray)

3. 侵蝕和膨脹

侵蝕和膨脹是最基本的兩種圖像形態學操作,它們的作用用來增強目標特征。
仍然使用上面的python logo圖片,演示侵蝕和膨脹的操作。

import matplotlib.pyplot as plt
import cv2
from scipy import ndimage

image = plt.imread("d:/share/python-logo.png")
# 圖像灰度化
image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 圖像侵蝕
structure = ndimage.generate_binary_structure(2, 2)
erosion = ndimage.binary_erosion(image, structure)

# 圖像膨脹
dilation = ndimage.binary_dilation(image, structure)

# 顯示原始圖像、侵蝕圖像和膨脹圖像
fig, ax = plt.subplots(1, 3, figsize=(8, 4))
ax[0].imshow(image, cmap="gray")
ax[0].set_title("灰度圖像")
ax[1].imshow(erosion, cmap="gray")
ax[1].set_title("圖像--侵蝕")
ax[2].imshow(dilation, cmap="gray")
ax[2].set_title("圖像--膨脹")
plt.show()


簡單來說,侵蝕操作會擴張圖像中黑色的區域,反之,膨脹操作會擴張圖像中白色的區域。
直觀上來看的話,侵蝕變了,膨脹變了。

4. 總結

Scipy圖像模塊本質上是把圖像當作數組來處理,
雖然它不是專門的圖像處理庫,不過它處理速度很快,且和numpy等庫結合緊密,
經常處理圖像的朋友可以把它當成一個輔助的工具。

總結

以上是生活随笔為你收集整理的【scipy 基础】--图像处理的全部內容,希望文章能夠幫你解決所遇到的問題。

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