1. 程式人生 > >【影象處理】直方圖均衡化(附帶Matlab及OpenCV3自程式設計實現程式碼)

【影象處理】直方圖均衡化(附帶Matlab及OpenCV3自程式設計實現程式碼)

前言

  直方圖均衡化是最基礎的影象處理方法之一,也是本人接觸影象處理時最先接觸到的演算法。演算法很簡單,但是卻不得不說非常的巧妙。本文將從方法的數學基礎出發講解直方圖均衡化背後的數學原理,並提供matlab實現程式碼。

直方圖均衡化

  影象灰度分佈的直方圖,顧名思義,就是影象中灰度值數目統計的直方圖。直方圖均衡化處理是將原圖的灰度分佈直方圖中灰度分佈密集的部分擴散成在全域性範圍內的均勻分佈。這樣就增加了畫素灰度值的動態範圍,從而達到增強影象整體對比度的效果。直方圖均衡化是一種灰度變換的方法,其對影象進行非線性的拉伸,重新分配畫素值。如下圖所示;


 

圖1 左圖是均衡化之前的影象灰度分佈直方圖,右圖是理想情況下均衡化之後的灰度分佈直方圖。

原理

  影象變換是需要找到一種合適的變換關係的,直方圖均衡化也不例外。為了方便表示,我們假設,影象灰度區間為[0,1];對於區間內的任意畫素值,我們需要進行如下變換。

S=T(r),0r1
  上述式子應該滿足兩個條件;
    1. 在區間[0,1]內,T(r)單調遞增;
    2. 應該有0T(r)1
  同樣的,反變換r=T1(s),也應該服從上面兩個條件。條件1 保證了保證原圖各灰度級在變換後仍保持從黑 到白(或從白到黑)的排列次序。條件2 保證變換前後灰度值動態範圍的一致性。
  假設原圖r概率密度為
Pr(r)
,變換後的概率密度為Ps(s)。由於影象灰度總值時不變的,那麼就有以下公式;
0rPr(r)dr=0sPs(s)ds
  又由圖1中的公式可知
Ps(s)=1
  則帶入上述式子中,有
0rPr(r)dr=0sPs(s)ds=0s1ds=s=T(r)
  所以,我們所要找的變換關係就找到了。
0rPr(r)dr=T(r)
  這個式子說明了,變換後的影象的灰度值時根據原圖中該點的灰度值的概率分佈函式得到的。

離散影象中的變換關係

  在離散的影象中,假設影象總共有N個畫素點,總共有L個畫素級。影象中灰度級為k的畫素點的數目為nk。則有如下關係;

Pr(rk)=nkN
  則函式T(r)可以表示成如下式子;
T(rk)=j=0kPr(rj)=j=0knkN0rj1,k=0,1L1;

 
圖2 離散的影象的均衡化

  假如有一張八位的影象,影象中一點的灰度為k,那麼在經過變換後,灰度應該為;

影象處理MATLAB:點、線、邊緣檢測

點檢測 程式碼示例 f = imread('test_pattern_with_single_pixel.tif'); w = [-1 -1 -1;-1 8 -1;-1 -1 -1];

影象處理 增加程式速度的方法

1. stack(棧) heap(堆) 和全域性區 測試BGR轉YUV  的表在stack 和 heap  2. 查詢表   部分查詢表  和3D查詢表  速度比較   3. 查詢表放在堆上和棧上的速度比較   4.

數字影象處理直方圖均衡化(Octave)

直方圖的均衡化是什麼呢? 舉個簡單的例子:在一個圓中有很多石頭,都集中在圓心附近,對其均衡化就是讓這些石頭儘可能的均勻分佈在圓這個區域內。 並且還有一個原則:如果石頭A在原來狀態下距離圓心的距離在所有石頭是第4位,那麼均衡化後仍然是第4位,相對順序不能變。(大概就是一個拉的更寬了)

影象處理工業相機原理詳述 (轉載)

轉自:  https://blog.csdn.net/HelloZEX/article/details/80905095 工業相機是機器視覺系統中的一個關鍵元件,其最本質的功能就是將光訊號轉變成有序的電訊號。選擇合適的相機也是機器視覺系統設計中的重要環節,相機的選擇不僅直接決定所採集到的影象

影象處理Lightroom Classic CC 2019 for Mac中文破解版

Lightroom Classic CC 2019 for Mac中文破解版是目前最強大的影象處理軟體之一,簡稱Lr CC 2019破解版,使用lightroom mac 破解版可以讓您獲得最佳的攝影效果所提供的圖片整理編輯工具,提高照片的色彩、刪除瑕疵、伸展畫面等等,可以為您的照片錦上添花。新版L

每日coding直方圖均衡化

def histeq(path): from PIL import Image from matplotlib import pyplot as plt import numpy as np image = np.array(Image.o

影象處理RGB影象邊緣檢測

灰度圖邊緣檢測    在學習影象處理時,首先接觸到的就是灰度影象的邊緣檢測,這是影象處理最基礎的也是最重要的一環,熟悉影象邊緣檢測有助於我們學習其他的數字影象處理方法。由於影象的邊緣區域會存在明顯的畫素值階躍,因此邊緣檢測主要是通過獲得影象灰度梯度,進而通過梯

影象處理VTK二維影象標記bug修正

遊戲或者CAD軟體中,我們常常在目標旁邊顯示一個始終面向使用者的二維影象,來表示某些特定標識。VTK使用vtkFollower 來實現這個功能,然而VTK7.1及以下版本發生bug,表現為使用vtkFollower之後,二維影象無法渲染,只顯示一個純白色的矩形框

影象處理FPGA verilog實現16位RGB的影象的灰度轉換

專案:FPGA verilog實現16位RGB的影象的轉換為8位寬的灰度圖。 專案需要的模組:呼叫一個RAM,16*22500,灰度處理模組和VGA800X600模組。          本次用到的FPGA是spartan6  X16。因為資源少,所以先嚐試的做點簡單的影

影象處理引導濾波器

1,定義 引導濾波:即需要引導圖的濾波器,引導圖可以是單獨的影象或者是輸入影象,當引導圖為輸入影象時,引導濾波就成為一個保持邊緣的濾波操作,可以用於影象重建的濾波。 引導濾波的流程見下圖: 假設輸入影象為p,輸出影象為q,引導圖為I,q與I在以畫素k為中心的視