Python圖像處理:形態學操作

2021-12-29 數據派THU

形態學的操作主要是去除影響圖像形狀和信息的噪聲。形態學運算在圖像分割中非常有用,可以得到無噪聲的二值圖像。


形態學方法


當圖像經過預處理進行增強和閾值等性能操作時,圖像就有可能得到一些噪聲。從而導致圖像中存在像素信息不平衡的問題。形態學的操作主要是去除影響圖像形狀和信息的噪聲。形態學運算在圖像分割中非常有用,可以得到無噪聲的二值圖像。基本的形態操作是侵蝕和膨脹。下面對這兩種操作進行說明:膨脹


在放大操作中,如果物體是白色的,那麼白色像素周圍的像素就會增大。它增加的區域取決於物體像素的形狀。膨脹過程增加了對象的像素數,減少了非對象的像素數。
 import numpy as np
 import imutils
 import cv2#reading the input image
 img = cv2.imread('thumb.png') #reads the image
 
 #cv2.imwrite('Input_image.jpg',image)
 
 #Resizing the image
 scale_percent = 70
 width = int(img.shape[1] * scale_percent / 100)
 height = int(img.shape[0] * scale_percent / 100)
 dim = (width, height)
   
 # resize the input image
 image = cv2.resize(img, dim, interpolation = cv2.INTER_AREA)
 
 kernel = np.ones((1,1), dtype = "uint8")/9
 dilation = cv2.dilate(image,kernel,iterations = 1)
 cv2.imwrite('dilation.jpg', dilation)
 
 kernel = np.ones((2,2), dtype = "uint8")/9
 dilation = cv2.dilate(image,kernel,iterations = 1)
 cv2.imwrite('dilation.jpg', dilation)
 
 kernel = np.ones((2,2), dtype = "uint8")/9
 dilation = cv2.dilate(image,kernel,iterations = 3)
 cv2.imwrite('dilation.jpg', dilation)
 
 kernel = np.ones((2,2), dtype = "uint8")/9
 dilation = cv2.dilate(image,kernel,iterations = 5)
 cv2.imwrite('dilation.jpg', dilation)
 
 kernel = np.ones((3,3), dtype = "uint8")/9
 dilation = cv2.dilate(image,kernel,iterations = 2)
 cv2.imwrite('dilation.jpg', dilation)

侵蝕侵蝕函數正好與膨脹功函數相反。侵蝕作用使物體體積變小。侵蝕過程增加了非目標像素,減少了目標像素。
 import numpy as np
 import imutils
 import cv2
 
 #reading the input image
 img = cv2.imread('thumb.png')
 #cv2.imwrite('Input_image.jpg',image)
 
 #Resizing the image
 scale_percent = 70
 width = int(img.shape[1] * scale_percent / 100)
 height = int(img.shape[0] * scale_percent / 100)
 dim = (width, height)
 
 # resize the input image
 image = cv2.resize(img, dim, interpolation = cv2.INTER_AREA)
 
 kernel = np.ones((1,1), dtype = "uint8")/9
 erosion = cv2.erode(image, kernel, iterations = 1)
 cv2.imwrite('erosion.jpg', erosion)
 
 kernel = np.ones((2,2), dtype = "uint8")/9
 erosion = cv2.erode(image, kernel, iterations = 2)
 cv2.imwrite('erosion.jpg', erosion)
 
 kernel = np.ones((2,2), dtype = "uint8")/9
 erosion = cv2.erode(image, kernel, iterations = 3)
 cv2.imwrite('erosion.jpg', erosion)
 
 kernel = np.ones((2,2), dtype = "uint8")/9
 erosion = cv2.erode(image, kernel, iterations = 5)
 cv2.imwrite('erosion.jpg', erosion)
 
 kernel = np.ones((5,5), dtype = "uint8")/9
 erosion = cv2.erode(image, kernel, iterations = 2)
 cv2.imwrite('erosion.jpg', erosion)

開操作


此方法可用於從圖像中去除噪聲。該方法的工作功能是先腐蝕再膨脹,以保持物體像素的原始性,去除背景中的小噪聲。
 import numpy as np
 import imutils
 import cv2
 #reading the input image
 img = cv2.imread('11.png')
 
 kernel = np.ones((5,5), dtype = "uint8")/9
 opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)
 cv2.imwrite('opening.jpg', opening)

此方法可用於從圖像中去除噪聲。這種方法的工作功能是先膨脹再腐蝕,去除內部的小噪聲。
 import numpy as np
 import imutils
 import cv2
 #reading the input image
 img = cv2.imread('thumb.png')
 
 kernel = np.ones((9,9), dtype = "uint8")/9
 closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)
 cv2.imwrite('closing.jpg', closing)

形態學梯度
 import numpy as np
 import imutils
 import cv2
 
 #reading the input image
 img = cv2.imread('g1.png')
 
 kernel = np.ones((6,6), dtype = "uint8")/9
 gradient = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel)
 cv2.imwrite('gradient.jpg', gradient)

總結


這些操作是處理二進位圖像的一種非常簡單的方法,也是圖像處理應用程式中預處理的一部分。

編輯:文婧

相關焦點

  • [Python圖像處理] 十.形態學之圖像頂帽運算和黑帽運算
    該系列文章是講解Python OpenCV圖像處理知識,前期主要講解圖像入門、OpenCV基礎用法,中期講解圖像處理的各種算法,包括圖像銳化算子
  • 圖像形態學
    if (szMorphology == L"頂帽變換") { morphologyEx(m_srcMatImg, m_dstMatImg, MORPH_TOPHAT, element); } else if (szMorphology ==
  • Python 圖像處理 OpenCV (9):圖像處理形態學開運算、閉運算以及梯度運算
    引言 前面介紹了圖像形態學的兩種基礎算法,圖像腐蝕和圖像膨脹,本篇接著介紹圖像形態學中的開運算、閉運算以及梯度運算。由於內容的連貫性,請先閱讀前文「Python 圖像處理 OpenCV (8):圖像腐蝕與圖像膨脹」,了解清楚圖像的腐蝕與膨脹基礎原理。
  • 常用的十大 python 圖像處理工具
    但無論是用於何種用途,這些圖像都需要進行處理。圖像處理就是分析和處理數字圖像的過程,主要旨在提高其質量或從中提取一些信息,然後可以將其用於某種用途。圖像處理中的常見任務包括顯示圖像,基本操作如裁剪、翻轉、旋轉等,圖像分割,分類和特徵提取,圖像恢復和圖像識別。
  • 10個Python圖像處理工具,非常全了!
    介紹我們這個世界充滿了數據,而圖像是這些數據的重要組成部分。然而,要想使用這些圖像,需要對它們進行處理。因此,圖像處理是分析和處理數字圖像的必要的過程,其主要目的是提高圖像質量或從中提取一些信息,然後加以利用。圖像處理中常見的任務包括圖像顯示、裁剪、翻轉、旋轉等基本操作、圖像分割、分類和特徵提取、圖像恢復和圖像識別。
  • Python+OpenCV的基礎圖像處理操作匯總
    後臺回復CV入坑必備獲得CV入坑學習資料本文我們將討論使用Python中的OpenCV庫進行圖像處理的一些基本操作圖像處理是對圖像進行的技術操作與分析,比如為了得到增強的圖像或提取一些有用的信息而進行的一系列操作。隨著我們的發展,許多應用程式使用圖像/幀/視頻作為輸入,對它們進行預處理,並將其輸入到設備或軟體或腳本中。圖像處理也可以是娛樂性的,可以用於許多應用。
  • 10個不得不知的Python圖像處理工具,非常全了!
    介紹我們這個世界充滿了數據,而圖像是這些數據的重要組成部分。然而,要想使用這些圖像,需要對它們進行處理。因此,圖像處理是分析和處理數字圖像的必要的過程,其主要目的是提高圖像質量或從中提取一些信息,然後加以利用。圖像處理中常見的任務包括圖像顯示、裁剪、翻轉、旋轉等基本操作、圖像分割、分類和特徵提取、圖像恢復和圖像識別。
  • 2021年用於圖像處理的Python頂級庫
    除此之外,它還有助於人臉檢測、圖像分割、特徵提取、目標檢測、三維重建等。有關更多信息,請查看官方文檔:https://opencv.org/Scikit-ImageScikit Image是另一個偉大的開源圖像處理庫。它幾乎適用於任何計算機視覺任務。它是最簡單、最直接的庫之一。這個庫的某些部分是用Cython編寫的(它是python程式語言的超集,旨在使python比C語言更快)。
  • Python中的十大圖像處理工具
    圖像處理是分析和操縱數字圖像的過程,旨在提高其質量或從中提取一些信息,然後將其用於某些方面。圖像處理中的常見任務包括顯示圖像,基本操作(如裁剪、翻轉、旋轉等),圖像分割,分類和特徵提取,圖像恢復和圖像識別等。 Python之成為圖像處理任務的最佳選擇,是因為這一科學程式語言日益普及,並且其自身免費提供許多最先進的圖像處理工具。
  • 【圖像處理】基於形態學的權重自適應圖像去噪
    數字圖像在進行數學形態濾波去噪時,根據噪聲特點可以嘗試採用維數由小到大的結構元素來進行處理,進而達到濾除不同噪聲的目的。
  • Python圖像處理:圖像腐蝕與圖像膨脹
    1.基礎理論2.圖像腐蝕代碼實現3.圖像膨脹代碼實現(註:該部分參考作者論文《一種改進的Sobel算子及區域擇優的身份證智能識別方法》)圖像的膨脹(Dilation)和腐蝕(Erosion)是兩種基本的形態學運算,主要用來尋找圖像中的極大區域和極小區域。
  • 使用Python圖像處理庫Pillow處理圖像文件
    本案例使用圖像處理庫Pillow中的模塊、對象來處理圖像:實現讀取圖像、獲取圖像信息、調整圖像大小、旋轉圖像、平滑圖像、剪切圖像等基本圖像處理任務。CS2.1 安裝PillowPillow是Python中的圖像處理庫(PIL:Python Image Library),提供了了廣泛的文件格式支持,強大的圖像處理能力,主要包括圖像儲存、圖像顯示、格式轉換以及基本的圖像處理操作等。
  • 整理 Python 中的圖像處理利器(共10個)
    當今世界充滿了各種數據,而圖像是其中高的重要組成部分。然而,若想其有所應用,我們需要對這些圖像進行處理。圖像處理是分析和操縱數字圖像的過程,旨在提高其質量或從中提取一些信息,然後將其用於某些方面。圖像處理中的常見任務包括顯示圖像,基本操作(如裁剪、翻轉、旋轉等),圖像分割,分類和特徵提取,圖像恢復和圖像識別等。
  • Python十大工具,讓圖像簡潔直觀有魅力!
    因此,圖像處理就是對數字圖像進行分析、操作的過程,其主要目的是為改善圖像質量或從中提取一些有用信息。圖像處理的常見任務包括圖像顯示、圖像基本操作(裁剪、翻轉、旋轉等)、圖像分割、分類及特徵提取、圖像修復和圖像識別。而Python作為一種科學程式語言已在日漸普及,在生態系統庫中還免費提供了許多最為先進的圖像處理工具,因此成為了圖像處理的最佳選擇。
  • OpenCV-Python教程:形態學變換~開閉操作,頂帽黑帽,形態學梯度,擊中擊不中
    形態學變換除了OpenCV-Python教程:形態學變換~腐蝕和膨脹介紹的腐蝕和膨脹還有開操作、閉操作、頂帽變換、黑帽變換等,這些變換都是以morphologyEx
  • 基於FPGA灰度圖像的形態學腐蝕
    基於FPGA灰度圖像的形態學腐蝕
  • 分享計算機視覺之圖像處理Python之opencv
    4.圖像分割  圖像分割是將圖像分成若干部分,每一部分對應於某一物體表面,在進行分割時,每一部分的灰度或紋理符合某一種均勻測度度量。其本質是將像素進行分類,分類的依據是像素的灰度值、顏色、頻譜特性、空間特性或紋理特性等。
  • 形態學上的圖像頂帽運算和黑帽運算是什麼?
    數學形態學(Mathematical morphology)是一門建立在格論和拓撲學基礎之上的圖像分析學科,是數學形態學圖像處理的基本理論。其基本的運算包括:腐蝕和膨脹、開運算和閉運算、骨架抽取、極限腐蝕、擊中擊不中變換、形態學梯度、Top-hat變換、顆粒分析、流域變換等。本篇文章主要講解Python調用OpenCV實現圖像形態學轉化,包括圖像頂帽運算和圖像黑帽運算,基礎性知識希望對您有所幫助。1.圖像頂帽運算2.圖像黑帽運算
  • ImagePy——UI界面支持開放插件的Python開源圖像處理框架
    雷鋒網 AI 科技評論按,ImagePy 是一款 python 開源圖像處理框架,其 UI 界面支持開放插件。在 github:https://github.com/Image-Py/imagepy 上,不僅有關於這款圖像處理軟體的詳細介紹,還有一些使用示例,雷鋒網 AI 科技評論接下來將詳細介紹這一開源圖像處理框架。
  • OpenCV形態學處理使用技巧與應用演示
    形態學中常用的方法有膨脹,腐蝕,開運算,閉運算,形態學梯度,頂帽,黑帽和擊中擊不中,大多以膨脹和腐蝕為基礎操作,需要注意的是膨脹和腐蝕都是對圖像中的高亮部分(二值圖白色部分)處理起作用,如果是白色背景黑色目標要做取反操作,否則得到的結果是相反的。進入正題,技巧與應用場景介紹:    (1)膨脹的應用。