1. 程式人生 > >影象處理-python實現影象處理(消噪,直方圖均衡化,二值化,形態學)

影象處理-python實現影象處理(消噪,直方圖均衡化,二值化,形態學)

1、選用合適的影象增強方法對以下給定影象進行增強操作以獲取清晰影象;

2、對增強後的影象進行閾值處理,獲得二值影象;

3、對二值影象進行形態學分析,提取有用資訊區域(即只剩下字母和數字區域);


 
python程式:

    import cv2
    import numpy as np
     
    # 二值形態學運算
    def morphology(img):
        kernel1 = cv2.getStructuringElement(cv2.MORPH_RECT, (20,14)) # 腐蝕矩陣
        iFushi = cv2.morphologyEx(img, cv2.MORPH_DILATE, kernel1)  # 對文字腐蝕運算
        cv2.imshow('fushi', iFushi)
     
        kernel2 = cv2.getStructuringElement(cv2.MORPH_RECT, (40, 40))  # 膨脹矩陣
        iPengzhang = cv2.morphologyEx(iFushi, cv2.MORPH_ERODE, kernel2)  # 對背景進行膨脹運算
        cv2.imshow('pengzhang', iPengzhang)
     
        # 背景圖和二分圖相減-->得到文字
        jian = np.abs(iPengzhang - img)
        cv2.imshow("jian", jian)
     
        kernel3 = cv2.getStructuringElement(cv2.MORPH_RECT, (3 , 6))  # 膨脹
        iWenzi = cv2.morphologyEx(jian, cv2.MORPH_DILATE, kernel3)  # 對文字進行膨脹運算
        cv2.imshow('wenzi', iWenzi)
     
    img = cv2.imread("TEST.tif")
    # 1、消除椒鹽噪聲:
    # 中值濾波器
    median = cv2.medianBlur(img, 5)
    # 消除噪聲圖
    cv2.imshow("median-image", median)
    # 轉化為灰度圖
    Grayimg = cv2.cvtColor(median, cv2.COLOR_RGB2GRAY)
    # 2、直方圖均衡化:
    hist = cv2.equalizeHist(Grayimg)
    cv2.imshow('hist',hist)
    # 3、二值化處理:
    # 閾值為140
    ret, binary = cv2.threshold(hist, 140, 255,cv2.THRESH_BINARY)
    cv2.imshow("binary-image",binary)
    # 二值形態處理
    morphology(binary)
     
    cv2.waitKey(0)


python程式步驟:

(一)讀入影象資料

使用OpenCV庫讀入tiff影象

img =cv2.imread("TEST.tif")

 

(二)消除椒鹽噪聲

使用5*5的中值濾波器濾除椒鹽噪聲

    median = cv2.medianBlur(img, 5)

 

(三)將圖片資料型別轉換為灰度圖

    Grayimg = cv2.cvtColor(median, cv2.COLOR_RGB2GRAY)

 

(四)對影象進行直方圖均衡化處理

    hist = cv2.equalizeHist(Grayimg)


 

(五)對直方圖均衡化後進行二值化處理

選取閾值為140,大於140灰度值的畫素置位255,低於140灰度值為0

    ret, binary = cv2.threshold(hist, 140, 255,cv2.THRESH_BINARY)


 

(六)對二值化影象進行腐蝕:

腐蝕掉文字部分得到背景部分,然後再對背景進行膨脹

使用(20,14)的矩形進行腐蝕操作:

kernel1= cv2.getStructuringElement(cv2.MORPH_RECT, (20,14))    iFushi = cv2.morphologyEx(img,cv2.MORPH_DILATE, kernel1)  

      


 

(七)將二分影象與腐蝕後的背景圖相減

得到有效資訊部分與部分噪聲

    jian = np.abs(iPengzhang - img)


 

(八)對文字部分進行膨脹,得到較清晰的影象

    kernel3 =cv2.getStructuringElement(cv2.MORPH_RECT, (3 , 6))

    iWenzi =cv2.morphologyEx(jian, cv2.MORPH_DILATE, kernel3)


 

(1)濾除椒鹽噪聲可以使用均值濾波器或中值濾波器:

分析可知:均值濾波器會引入噪聲的影響,而中值濾波器可以有效濾除噪聲的影響。

試驗了兩種濾波器後,發現均值濾波器相較中值濾波器較模糊,所以濾除椒鹽噪聲使用中值濾波器會好一點

(2)選取合適的閾值進行二值化處理,要做到使資訊清晰,並且能夠有效地分割邊界。

(3)選取合適的運算矩陣進行二值形態學的運算,通過腐蝕掉有效區域,然後進行影象減法的操作,可以得到被腐蝕的區域。

(4)對於斷裂處,可採用長方形的矩陣進行膨脹處理,對於黏連處,同樣可以採用長方形進行腐蝕處理
---------------------  
作者:wTen  
來源:CSDN  
原文:https://blog.csdn.net/wsh596823919/article/details/79982485  
版權宣告:本文為博主原創文章,轉載請附上博文連結!