當前位置:首頁 » 編程語言 » 圖像分割python

圖像分割python

發布時間: 2023-04-16 10:57:00

A. 10 個 python 圖像編輯工具

以下提到的這些 Python 工具在編輯圖像、操作圖像底層數據方面都提供了簡單直接的方法。

-- Parul Pandey

當今的世界充滿了數據,而圖像數據就是其中很重要的一部分。但只有經過處理和分析,提高圖像的質量,從中提取出有效地信息,才能利用到這些圖像數據。

常見的圖像處理操作包括顯示圖像,基本的圖像操作,如裁剪、翻轉、旋轉;圖像的分割、分類、特徵提取;圖像恢復;以及圖像識別等等。Python 作為一種日益風靡的科學編程語言,是這些圖像處理操作的最佳選擇。同時,在 Python 生態當中也有很多可以免費使用的優秀的圖像處理工具。

下文將介紹 10 個可以用於圖像處理任務的 Python 庫,它們在編輯圖像、查看圖像底層數據方面都提供了簡單直接的方法。

scikit-image 是一個結合 NumPy 數組使用的開源 Python 工具,它實現了可用於研究、教育、工業應用的演算法和應用程序。即使是對於剛剛接觸 Python 生態圈的新手來說,它也是一個在使用上足夠簡單的庫。同時它的代碼質量也很高,因為它是由一個活躍的志願者社區開發的,並且通過了 同行評審(peer review)。

scikit-image 的 文檔 非常完善,其中包含了豐富的用例。

可以通過導入 skimage 使用,大部分的功能都可以在它的子模塊中找到。

圖像濾波(image filtering):

使用 match_template() 方法實現 模板匹配(template matching):

在 展示頁面 可以看到更多相關的例子。

NumPy 提供了對數組的支持,是 Python 編程的一個核心庫。圖像的本質其實也是一個包含像素數據點的標准 NumPy 數組,因此可以通過一些基本的 NumPy 操作(例如切片、 掩膜(mask)、 花式索引(fancy indexing)等),就可以從像素級別對圖像進行編輯。通過 NumPy 數組存儲的圖像也可以被 skimage 載入並使用 matplotlib 顯示。

在 NumPy 的 官方文檔 中提供了完整的代碼文檔和資源列表。

使用 NumPy 對圖像進行 掩膜(mask)操作:

像 NumPy 一樣, SciPy 是 Python 的一個核心科學計算模塊,也可以用於圖像的基本操作和處理。尤其是 SciPy v1.1.0 中的 scipy.ndimage 子模塊,它提供了在 n 維 NumPy 數組上的運行的函數。SciPy 目前還提供了 線性和非線性濾波(linear and non-linear filtering)、 二值形態學(binary morphology)、 B 樣條插值(B-spline interpolation)、 對象測量(object measurements)等方面的函數。

在 官方文檔 中可以查閱到 scipy.ndimage 的完整函數列表。

使用 SciPy 的 高斯濾波 對圖像進行模糊處理:

PIL (Python Imaging Library) 是一個免費 Python 編程庫,它提供了對多種格式圖像文件的打開、編輯、保存的支持。但在 2009 年之後 PIL 就停止發布新版本了。幸運的是,還有一個 PIL 的積極開發的分支 Pillow ,它的安裝過程比 PIL 更加簡單,支持大部分主流的操作系統,並且還支持 Python 3。Pillow 包含了圖像的基礎處理功能,包括像素點操作、使用內置卷積內核進行濾波、顏色空間轉換等等。

Pillow 的 官方文檔 提供了 Pillow 的安裝說明自己代碼庫中每一個模塊的示例。

使用 Pillow 中的 ImageFilter 模塊實現圖像增強:

OpenCV(Open Source Computer Vision 庫)是計算機視覺領域最廣泛使用的庫之一, OpenCV-Python 則是 OpenCV 的 Python API。OpenCV-Python 的運行速度很快,這歸功於它使用 C/C++ 編寫的後台代碼,同時由於它使用了 Python 進行封裝,因此調用和部署的難度也不大。這些優點讓 OpenCV-Python 成為了計算密集型計算機視覺應用程序的一個不錯的選擇。

入門之前最好先閱讀 OpenCV2-Python-Guide 這份文檔。

使用 OpenCV-Python 中的 金字塔融合(Pyramid Blending)將蘋果和橘子融合到一起:

SimpleCV 是一個開源的計算機視覺框架。它支持包括 OpenCV 在內的一些高性能計算機視覺庫,同時不需要去了解 位深度(bit depth)、文件格式、 色彩空間(color space)之類的概念,因此 SimpleCV 的學習曲線要比 OpenCV 平緩得多,正如它的口號所說,「將計算機視覺變得更簡單」。SimpleCV 的優點還有:

官方文檔 簡單易懂,同時也附有大量的學慣用例。

文檔 包含了安裝介紹、示例以及一些 Mahotas 的入門教程。

Mahotas 力求使用少量的代碼來實現功能。例如這個 Finding Wally 游戲 :

ITK (Insight Segmentation and Registration Toolkit)是一個為開發者提供普適性圖像分析功能的開源、跨平台工具套件, SimpleITK 則是基於 ITK 構建出來的一個簡化層,旨在促進 ITK 在快速原型設計、教育、解釋語言中的應用。SimpleITK 作為一個圖像分析工具包,它也帶有 大量的組件 ,可以支持常規的濾波、圖像分割、 圖像配准(registration)功能。盡管 SimpleITK 使用 C++ 編寫,但它也支持包括 Python 在內的大部分編程語言。

有很多 Jupyter Notebooks 用例可以展示 SimpleITK 在教育和科研領域中的應用,通過這些用例可以看到如何使用 Python 和 R 利用 SimpleITK 來實現互動式圖像分析。

使用 Python + SimpleITK 實現的 CT/MR 圖像配准過程:

pgmagick 是使用 Python 封裝的 GraphicsMagick 庫。 GraphicsMagick 通常被認為是圖像處理界的瑞士軍刀,因為它強大而又高效的工具包支持對多達 88 種主流格式圖像文件的讀寫操作,包括 DPX、GIF、JPEG、JPEG-2000、PNG、PDF、PNM、TIFF 等等。

pgmagick 的 GitHub 倉庫 中有相關的安裝說明、依賴列表,以及詳細的 使用指引 。

圖像縮放:

邊緣提取:

Cairo 是一個用於繪制矢量圖的二維圖形庫,而 Pycairo 是用於 Cairo 的一組 Python 綁定。矢量圖的優點在於做大小縮放的過程中不會丟失圖像的清晰度。使用 Pycairo 可以在 Python 中調用 Cairo 的相關命令。

Pycairo 的 GitHub 倉庫 提供了關於安裝和使用的詳細說明,以及一份簡要介紹 Pycairo 的 入門指南 。

使用 Pycairo 繪制線段、基本圖形、 徑向漸變(radial gradients):

以上就是 Python 中的一些有用的圖像處理庫,無論你有沒有聽說過、有沒有使用過,都值得試用一下並了解它們。

via: https://opensource.com/article/19/3/python-image-manipulation-tools

作者: Parul Pandey 選題: lujun9972 譯者: HankChow 校對: wxy

B. python將圖像分割成兩半

importos
importre
importsys
importtime
importrandom
#addsystemheadershere...

#導入cv模塊
importcv2ascv
#讀取圖像,支持bmp、jpg、png、tiff等常用格式

height=0
length=0

key=0

picPath="E:\python3.4.0-amd\project\imageProcess\tamamo.jpg"
ifnotos.path.exists(picPath):
print("picturenotexists!exit!")
sys.exit()
srcImage=cv.imread(picPath)
ifsrcImageisNone:
print("readpicturefailed!exit!")
sys.exit()
size=srcImage.shape

height=size[0]
length=size[1]
print("srcImage:height(%u)length(%u)"%(height,length))
#顯示原圖
#cv.imshow("srcImage",srcImage)

#創建窗口並顯示圖像
mid=int(length/2)

leftImage=srcImage[0:height,0:mid]
cv.namedWindow("leftImage",cv.WINDOW_NORMAL)
cv.resizeWindow("leftImage",mid,height)
cv.imshow("leftImage",leftImage)

rightIamge=srcImage[0:height,mid:length]
cv.namedWindow("rightIamge",cv.WINDOW_NORMAL)
cv.resizeWindow("rightIamge",mid,height)
cv.imshow("rightIamge",rightIamge)

cv.waitKey(0)
#釋放窗口
cv.destroyAllWindows()

C. 常用的十大python圖像處理工具

原文標題:10 Python image manipulation tools.
作者 | Parul Pandey
翻譯 | 安其羅喬爾、JimmyHua
今天,在我們的世界裡充滿了數據,圖像成為構成這些數據的重要組成部分。但無論是用於何種用途,這些圖像都需要進行處理。圖像處理就是分析和處理數字圖像的過程,主要旨在提高其質量或從中提取一些信息,然後可以將其用於某種用途。
圖像處理中的常見任務包括顯示圖像,基本操作如裁剪、翻轉、旋轉等,圖像分割,分類和特徵提取,圖像恢復和圖像識別。Python成為這種圖像處理任務是一個恰當選擇,這是因為它作為一種科學編程語言正在日益普及,並且在其生態系統中免費提供許多最先進的圖像處理工具供大家使用。
讓我們看一下可以用於圖像處理任務中的常用 Python 庫有哪些吧。

1.scikit-image
scikit-image是一個開源的Python包,適用於numpy數組。它實現了用於研究,教育和工業應用的演算法和實用工具。即使是那些剛接觸Python生態系統的人,它也是一個相當簡單直接的庫。此代碼是由活躍的志願者社區編寫的,具有高質量和同行評審的性質。
資源
文檔里記錄了豐富的例子和實際用例,閱讀下面的文檔:
http://scikit-image.org/docs/stable/user_guide.html
用法
該包作為skimage導入,大多數功能都在子模塊中找的到。下面列舉一些skimage的例子:
圖像過濾

使用match_template函數進行模板匹配

你可以通過此處查看圖庫找到更多示例。
2. Numpy
Numpy是Python編程的核心庫之一,並為數組提供支持。圖像本質上是包含數據點像素的標准Numpy數組。因此,我們可以通過使用基本的NumPy操作,例如切片、掩膜和花式索引,來修改圖像的像素值。可以使用skimage載入圖像並使用matplotlib顯示圖像。
資源
Numpy的官方文檔頁面提供了完整的資源和文檔列表:
http://www.numpy.org/
用法
使用Numpy來掩膜圖像.

3.Scipy
scipy是Python的另一個類似Numpy的核心科學模塊,可用於基本的圖像操作和處理任務。特別是子模塊scipy.ndimage,提供了在n維NumPy數組上操作的函數。該包目前包括線性和非線性濾波,二值形態學,B樣條插值和對象測量等功能函數。
資源
有關scipy.ndimage包提供的完整功能列表,請參閱下面的鏈接:
https://docs.scipy.org/doc/scipy/reference/tutorial/ndimage.html#correlation-and-convolution
用法
使用SciPy通過高斯濾波器進行模糊:

4. PIL/ Pillow
PIL( Python圖像庫 )是Python編程語言的一個免費庫,它支持打開、操作和保存許多不同的文件格式的圖像。然而, 隨著2009年的最後一次發布,它的開發停滯不前。但幸運的是還有有Pillow,一個PIL積極開發的且更容易安裝的分支,它能運行在所有主要的操作系統,並支持Python3。這個庫包含了基本的圖像處理功能,包括點運算、使用一組內置卷積核的濾波和色彩空間的轉換。
資源
文檔中有安裝說明,以及涵蓋庫的每個模塊的示例:
https://pillow.readthedocs.io/en/3.1.x/index.html
用法
在 Pillow 中使用 ImageFilter 增強圖像:

5. OpenCV-Python
OpenCV( 開源計算機視覺庫 )是計算機視覺應用中應用最廣泛的庫之一 。OpenCV-Python 是OpenCV的python版API。OpenCV-Python的優點不只有高效,這源於它的內部組成是用C/C++編寫的,而且它還容易編寫和部署(因為前端是用Python包裝的)。這使得它成為執行計算密集型計算機視覺程序的一個很好的選擇。
資源
OpenCV-Python-Guide指南可以讓你使用OpenCV-Python更容易:
https://github.com/abidrahmank/OpenCV2-Python-Tutorials
用法
下面是一個例子,展示了OpenCV-Python使用金字塔方法創建一個名為「Orapple」的新水果圖像融合的功能。

6. SimpleCV
SimpleCV 也是一個用於構建計算機視覺應用程序的開源框架。有了它,你就可以訪問幾個高性能的計算機視覺庫,如OpenCV,而且不需要先學習了解位深度、文件格式、顏色空間等。
它的學習曲線大大小於OpenCV,正如它們的口號所說「計算機視覺變得簡單」。一些支持SimpleCV的觀點有:
即使是初學者也可以編寫簡單的機器視覺測試攝像機、視頻文件、圖像和視頻流都是可互操作的資源
官方文檔非常容易理解,而且有大量的例子和使用案例去學習:
https://simplecv.readthedocs.io/en/latest/
用法

7. Mahotas
Mahotas 是另一個計算機視覺和圖像處理的Python庫。它包括了傳統的圖像處理功能例如濾波和形態學操作以及更現代的計算機視覺功能用於特徵計算,包括興趣點檢測和局部描述符。該介面是Python語言,適合於快速開發,但是演算法是用C語言實現的,並根據速度進行了調優。Mahotas庫速度快,代碼簡潔,甚至具有最小的依賴性。通過原文閱讀它們的官方論文以獲得更多的了解。
資源
文檔包括安裝指導,例子,以及一些教程,可以更好的幫助你開始使用mahotas。
https://mahotas.readthedocs.io/en/latest/install.html
用法
Mahotas庫依賴於使用簡單的代碼來完成任務。關於『Finding Wally』的問題,Mahotas做的很好並且代碼量很少。下面是源碼
https://mahotas.readthedocs.io/en/latest/wally.html

8. SimpleITK
ITK 或者 Insight Segmentation and Registration Toolkit是一個開源的跨平台系統,為開發人員提供了一套廣泛的圖像分析軟體工具 。其中, SimpleITK是建立在ITK之上的簡化層,旨在促進其在快速原型設計、教育、解釋語言中的應用。SimpleITK 是一個圖像分析工具包,包含大量支持一般過濾操作、圖像分割和匹配的組件。SimpleITK本身是用C++寫的,但是對於包括Python以內的大部分編程語言都是可用的。
資源
大量的Jupyter Notebooks 表明了SimpleITK在教育和研究領域已經被使用。Notebook展示了用Python和R編程語言使用SimpleITK來進行互動式圖像分析。
http://insightsoftwareconsortium.github.io/SimpleITK-Notebooks/
用法
下面的動畫是用SimpleITK和Python創建的剛性CT/MR匹配過程的可視化 。點擊此處可查看源碼!

9. pgmagick
pgmagick是GraphicsMagick庫的一個基於python的包裝。 GraphicsMagick圖像處理系統有時被稱為圖像處理的瑞士軍刀。它提供了一個具有強大且高效的工具和庫集合,支持以88種主要格式(包括重要格式,如DPX、GIF、JPEG、JPEG-2000、PNG、PDF、PNM和TIFF)讀取、寫入和操作圖像。
資源
有一個專門用於PgMagick的Github庫 ,其中包含安裝和需求說明。還有關於這個的一個詳細的用戶指導:
https://github.com/hhatto/pgmagick
用法
使用pgmagick可以進行的圖像處理活動很少,比如:
圖像縮放

邊緣提取

10. Pycairo
Pycairo是圖像處理庫cairo的一組Python捆綁。Cairo是一個用於繪制矢量圖形的2D圖形庫。矢量圖形很有趣,因為它們在調整大小或轉換時不會失去清晰度 。Pycairo是cairo的一組綁定,可用於從Python調用cairo命令。
資源
Pycairo的GitHub庫是一個很好的資源,有關於安裝和使用的詳細說明。還有一個入門指南,其中有一個關於Pycairo的簡短教程。
庫:https://github.com/pygobject/pycairo指南:https://pycairo.readthedocs.io/en/latest/tutorial.html用法
使用Pycairo繪制線條、基本形狀和徑向梯度:

總結
有一些有用且免費的Python圖像處理庫可以使用,有的是眾所周知的,有的可能對你來說是新的,試著多去了解它們。

D. OpenCV-Python系列八:提取圖像輪廓

當你完成圖像分割之後,圖像輪廓檢測往往可以進一步篩選你要的目標,OpenCV中可以使用cv2.findContours來得到輪廓。

補充
再不少場景中,找輪廓的最小外接矩形是基本需求,opencv中minAreaRect得到的是一個帶有旋轉角度信息的rect,可以使用cv2.boxPoints(rect)來將其轉為矩形的四個頂點坐標(浮點類型).你也可以使用cv2.polylines來繪制這樣的輪廓信息

注意findContours參數的變化,在opencv4中,返回值只有contours和hierarchy ,這一點與opencv3中不同。對與輪廓的層級結構,比較難用,雖然可以通過輪廓的層級結構來進行索引你需要的輪廓,不過對於大部分機器視覺應用場景,二值化的結果有時候很難預料,單單通過這種層級關系索引,非常容易出錯。所以,只找最外部結構的 cv2.RETR_EXTERNAL 是不是真香呢?

處理cv2.approxPolyDP()外,你也可以使用cv2.convexHull來求輪廓的近似凸包,其中凸形狀內部--任意兩點連線都在該形狀內部。

clockwise :默認為False,即輪廓為逆時針方向進行排列;
returnPoints :設置為False會返回與凸包上對應的輪廓的點索引值,設置為True,則會返回凸包上的點坐標集,默認為True

對於opencv-python的提取圖像輪廓部分有問題歡迎留言, Have Fun With OpenCV-Python, 下期見。

E. python中腦瘤圖像分割錯誤RuntimeError: Exception thrown in SimpleITK ReadImage

有系統啟動自動載入的程序的某個文件壞了,無法運行整個程序,直接跳到了文件結束部分。

原因和解決辦法:
1-利用工具軟體看看啟動時自動載入那些程序,把不用的幹掉,優化大師等是首選的工具;
2-系統文件損壞,此時只能通過修復系統文件解決。方法:sfc命令,有參數可選:
/SCANNOW 立即掃描所有受保護的系統文件。
/SCANONCE 下次啟動時掃描所有受保護的系統文件。
/SCANBOOT 每次啟動時掃描所有受保護的系統文件。
/REVERT 將掃描返回到默認設置。
/PURGECACHE 清除文件緩存
/CACHESIZE=x 設置文件緩存大小。
或者用光碟選擇安裝系統,然後選擇修復系統,按R鍵修復選擇的系統,此時你系統中的已安裝程序都會正常保留的,Office、Photo等都會正常不用重新裝,Outlook的郵件和帳號也在。但是如果你選擇了ESC鍵全新安裝,那麼真的是全新安裝,所有程序都沒了。

熱點內容
安卓和蘋果哪個最保值 發布:2024-11-02 02:30:02 瀏覽:603
橋接的網關伺服器地址怎麼查 發布:2024-11-02 02:29:11 瀏覽:861
電腦里dns伺服器未響應咋辦 發布:2024-11-02 02:28:24 瀏覽:543
星與雲伺服器 發布:2024-11-02 02:27:49 瀏覽:205
centos升級python27 發布:2024-11-02 02:00:57 瀏覽:673
ue4未找到編譯器 發布:2024-11-02 01:46:08 瀏覽:155
python中的withopen 發布:2024-11-02 01:46:07 瀏覽:976
編程名人 發布:2024-11-02 01:42:18 瀏覽:867
伺服器電腦配置表 發布:2024-11-02 01:41:29 瀏覽:370
linux使用串口 發布:2024-11-02 01:37:11 瀏覽:702