數學之路-python計算實戰(14)-機器視覺-映像增強(長條圖均衡化),-python長條圖

來源:互聯網
上載者:User

數學之路-python計算實戰(14)-機器視覺-映像增強(長條圖均衡化),-python長條圖

我們來看一個灰階映像,讓表示灰階出現的次數,這樣映像中灰階為 的像素的出現機率是

 是映像中所有的灰階數, 是映像中所有的像素數,  實際上是映像的長條圖,歸一化到 。

把  作為對應於  的累計機率函數, 定義為:

 是映像的累計歸一化長條圖。

我們建立一個形式為  的變化,對於原始映像中的每個值它就產生一個 ,這樣  的累計機率函數就可以在所有值範圍內進行線性化,轉換公式定義為:

注意 T 將不同的等級映射到  域,為了將這些值對應回它們最初的域,需要在結果上應用下面的簡單變換:

上面描述了灰階映像上使用長條圖均衡化的方法,但是通過將這種方法分別用於映像RGB顏色值的紅色、綠色和藍色分量,從而也可以對彩色映像進行處理。


Python: cv2.equalizeHist(src[, dst]) → dst
C: void cvEqualizeHist(const CvArr*  src, CvArr*  dst)
Parameters:
  • src – Source 8-bit single channel image.
  • dst – Destination image of the same size and type as src .

The function equalizes the histogram of the input image using the following algorithm:

  1. Calculate the histogram  for src .

  2. Normalize the histogram so that the sum of histogram bins is 255.

  3. Compute the integral of the histogram:

  4. Transform the image using  as a look-up table: 

The algorithm normalizes the brightness and increases the contrast of the image. 

# -*- coding: utf-8 -*-   #code:myhaspl@myhaspl.comimport cv2fn="test1.jpg"myimg=cv2.imread(fn)img=cv2.cvtColor(myimg,cv2.COLOR_BGR2GRAY)newimg=cv2.equalizeHist(img)cv2.imshow('src',img)cv2.imshow('dst',newimg)cv2.waitKey()cv2.destroyAllWindows()


本部落格所有內容是原創,如果轉載請註明來源http://blog.csdn.net/myhaspl/下面右圖是經過增強化的圖

長條圖均衡化通常用來增加許多映像的全域對比,尤其是當映像的有用資料的對比相當接近的時候。通過這種方法,亮度可以更好地在長條圖上分布。這樣就可以用於增強局部的對比而不影響整體的對比
本部落格所有內容是原創,如果轉載請註明來源http://blog.csdn.net/myhaspl/下面部分代碼驗證實現了演算法
# -*- coding: utf-8 -*-   #code:myhaspl@myhaspl.com#長條圖均衡化import cv2import numpy as npfn="test5.jpg"myimg=cv2.imread(fn)img=cv2.cvtColor(myimg,cv2.COLOR_BGR2GRAY)h=img.shape[0]w=img.shape[1]newimg=np.zeros((h,w),np.uint8)scount=0.0#原始映像灰階級scol={}#靶心圖表像灰階級dcol={}#原始映像頻度Ps={}#累計機率Cs={}#統計原始映像灰階級for m in xrange(h):    for n in xrange(w):        scol[img[m,n]]=scol.setdefault(img[m,n],0)+1        scount+=1


左為源圖,右圖為進行長條圖均衡化後的圖




長條圖均衡化後的映像怎算 已知原映像,長條圖均衡化後的映像不要MATLAB程式我只明白原理就行

,是均衡前後的長條圖對比。
長條圖均衡化的意義在於:盡量讓每個亮度的點都一樣多,從而讓圖片的灰階細節盡量展現在人眼前,符合人眼查看圖片的規律。
所以舊圖的長條圖並不平坦,做完長條圖均衡化以後,長條圖就會趨向平坦。
就拿上面2張長條圖舉例:
假設一張圖片的的亮度最低是0,最高是255(我就不說灰階了)
1。假設圖片是一張M*M像素大小的圖片
2。轉換以後,假設,舊圖亮度在0-10之間的點數,等於新圖0-30之間的點數(因為舊圖很多點都擠在0-10之間,新圖要把這些點拉開)
3。又因為新圖是平坦的,所以我們很容易假設,亮度為30的點數,佔了總點數的1/256,也就是(M*M)/256
4。所以新圖中,0-30亮度之間的點數為30*(M*M)/256
5。根據上面2和4的關係列等式
30=(256/(M*M))*(亮度在0-10的點數總和)
6。把10換成p,30換成q,這樣對應任何舊圖中的p亮度,都可以計算出與之對應的新圖的亮度p。舊圖跟新圖的映射關係就出來了。
以上計算都是基於一個假設:(3)新圖的長條圖是平坦的。


參考資料:www.mathworks.cn/...q.html

 
為何長條圖均衡化可以有效增強映像

因為長條圖均衡化處理之後,原來比較少像素的灰階會被分配到別的灰階去,像素相對集中, 處理後灰階範圍變大,對比變大,清晰度變大,所以能有效增強映像。
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.