0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

圖像的幾種常見的灰度是什么

新機器視覺 ? 來源:新機器視覺 ? 2023-08-07 10:02 ? 次閱讀

灰度變換也被稱為圖像的點運算(只針對圖像的某一像素點)是所有圖像處理技術中最簡單的技術,其變換形式如下:

4ebe7750-3461-11ee-9e74-dac502259ad0.png

其中,T是灰度變換函數(shù);r是變換前的灰度;s是變換后的像素。

圖像灰度變換的有以下作用:

改善圖像的質(zhì)量,使圖像能夠顯示更多的細節(jié),提高圖像的對比度(對比度拉伸);

有選擇的突出圖像感興趣的特征或者抑制圖像中不需要的特征;

可以有效的改變圖像的直方圖分布,使像素的分布更為均勻。

常見的灰度變換

灰度變換函數(shù)描述了輸入灰度值和輸出灰度值之間變換關系,一旦灰度變換函數(shù)確定下來了,那么其輸出的灰度值也就確定了。

可見灰度變換函數(shù)的性質(zhì)就決定了灰度變換所能達到的效果。用于圖像灰度變換的函數(shù)主要有以下三種:

線性函數(shù) (圖像反轉(zhuǎn))

對數(shù)函數(shù):對數(shù)和反對數(shù)變換

冪律函數(shù):n次冪和n次開方變換

4ed55d3a-3461-11ee-9e74-dac502259ad0.jpg 上圖給出了幾種常見灰度變換函數(shù)的曲線圖,根據(jù)這幾種常見函數(shù)的曲線形狀,可以知道這幾種變換的所能達到的效果。

例如,對數(shù)變換和冪律變換都能實現(xiàn)圖像灰度級的擴展/壓縮,另外對數(shù)變換還有一個重要的性質(zhì),它能壓縮圖像灰度值變換較大的圖像的動態(tài)范圍(例如,傅立葉變換的頻譜顯示)。

線性變換

令r為變換前的灰度,s為變換后的灰度,則線性變換的函數(shù):

4eed061a-3461-11ee-9e74-dac502259ad0.png

其中,a為直線的斜率,b為在y軸的截距。選擇不同的a,b值會有不同的效果:

a>1,增加圖像的對比度

a<1,減小圖像的對比度

a=1且b≠0a=1且b≠0,圖像整體的灰度值上移或者下移,也就是圖像整體變亮或者變暗,不會改變圖像的對比度。

a<0且b=0?a<0且b=0,圖像的亮區(qū)域變暗,暗區(qū)域變亮

a=1且b=0a=1且b=0,恒定變換,不變

a=?1且b=255a=?1且b=255,圖像反轉(zhuǎn)。

在進行圖像增強時,上述的線性變換函數(shù)用的較多的就是圖像反轉(zhuǎn)了,根據(jù)上面的參數(shù),圖像反轉(zhuǎn)的變換函數(shù)為:s=255?s。

圖像反轉(zhuǎn)得到的是圖像的負片,能夠有效的增強在圖像暗區(qū)域的白色或者灰色細節(jié)。

其效果如下:

圖像反轉(zhuǎn)的實現(xiàn)是比較簡單的,在 OpenCV 中有對Mat的運算符重載,可以直接 Mat r = 255 - img 或者 ~img 來實現(xiàn)。

對數(shù)變換

對數(shù)變換的通用公式是:

4f1a85ea-3461-11ee-9e74-dac502259ad0.png

其中,c是一個常數(shù),,假設r≥0,根據(jù)上圖中的對數(shù)函數(shù)的曲線可以看出:對數(shù)變換,將源圖像中范圍較窄的低灰度值映射到范圍較寬的灰度區(qū)間,同時將范圍較寬的高灰度值區(qū)間映射為較窄的灰度區(qū)間,從而擴展了暗像素的值,壓縮了高灰度的值,能夠?qū)D像中低灰度細節(jié)進行增強。

從函數(shù)曲線也可以看出,反對數(shù)函數(shù)的曲線和對數(shù)的曲線是對稱的,在應用到圖像變換其結果是相反的,反對數(shù)變換的作用是壓縮灰度值較低的區(qū)間,擴展高灰度值的區(qū)間。

基于 OpenCV 的實現(xiàn),其對數(shù)變換的代碼如下:

floatpixels[256];
for(inti=0;i(i,j)[0]=pixels[image.at(i,j)[0]];
imageLog.at(i,j)[1]=pixels[image.at(i,j)[1]];
imageLog.at(i,j)[2]=pixels[image.at(i,j)[2]];
}
}
//歸一化到0~255
normalize(imageLog,imageLog,0,255,CV_MINMAX);
//轉(zhuǎn)換成8bit圖像顯示
convertScaleAbs(imageLog,imageLog);

這使用的對數(shù)函數(shù)的底為10。由于灰度變換是灰度值之間的一對一的映射,而灰度值區(qū)間通常為[0,255],所以在進行灰度變換時,通常使用查表法。

也就是,現(xiàn)將每個灰度值的映射后的結果計算出來,在變換時,通過查表得到變換后的灰度值。執(zhí)行上面結果得到的結果如下:

左邊為原圖像,其拍攝環(huán)境較暗,無法分辨出很多的細節(jié);右邊為變換后的圖像,整個圖像明亮許多,也能分辨出原圖中處于暗區(qū)域的狗狗的更多細節(jié)。


對數(shù)變換,還有一個很重要的性質(zhì),能夠壓縮圖像像素的動態(tài)范圍。例如,在進行傅立葉變換時,得到的頻譜的動態(tài)范圍較大,頻譜值的范圍通常為[0,106],甚至更高。

這樣范圍的值,顯示器是無法完整的顯示如此大范圍的灰度值的,因而許多灰度細節(jié)會被丟失掉。而將得到的頻譜值進行對數(shù)變換,可以將其動態(tài)范圍變換到一個合適區(qū)間,這樣就能夠顯示更多的細節(jié)。

冪律變換(伽馬變換)

伽馬變換的公式為:

4f43f40c-3461-11ee-9e74-dac502259ad0.png

其中c和γ為正常數(shù)。


伽馬變換的效果與對數(shù)變換有點類似,當γ>1時將較窄范圍的低灰度值映射為較寬范圍的灰度值,同時將較寬范圍的高灰度值映射為較窄范圍的灰度值;當γ<1時,情況相反,與反對數(shù)變換類似。

其函數(shù)曲線如下:


4f5dee7a-3461-11ee-9e74-dac502259ad0.jpg

當γ<1時,γ的值越小,對圖像低灰度值的擴展越明顯;當γ>1時,γ的值越大,對圖像高灰度值部分的擴展越明顯。這樣就能夠顯示更多的圖像的低灰度或者高灰度細節(jié)。


伽馬變換主要用于圖像的校正,對灰度值過高(圖像過亮)或者過低(圖像過暗)的圖像進行修正,增加圖像的對比度,從而改善圖像的顯示效果。

基于 OpenCV 的實現(xiàn):

floatpixels[256];
for(inti=0;i(i,j)[0]=pixels[image.at(i,j)[0]];
imageLog.at(i,j)[1]=pixels[image.at(i,j)[1]];
imageLog.at(i,j)[2]=pixels[image.at(i,j)[2]];
}
}
//歸一化到0~255
normalize(imageLog,imageLog,0,255,CV_MINMAX);
//轉(zhuǎn)換成8bit圖像顯示
convertScaleAbs(imageLog,imageLog);

這里選擇的參數(shù)為c = 1,γ=3,來擴展圖像的高灰度區(qū)域,其結果如下:

當選擇參數(shù)為c = 1,γ=0.4,來擴展圖像的低灰度區(qū)域,其效果如下:

根據(jù)以上的結果,結合伽馬變換的函數(shù)曲線圖,做如下總結:

γ>1時,會將低于某個灰度值K的灰度區(qū)域壓縮到較小的灰度區(qū)間,而將高于K的灰度區(qū)域擴展到較大灰度區(qū)間。

令L為灰度的最大值,k = 3/4L . 那么就有[0,3/4L]的灰度區(qū)域映射到為[0,1/8L]的輸出;而將[3/4L,L]這部分高灰度區(qū)域映射到[1/8L,L]區(qū)間。

這樣變換的結果就是,低于K的灰度區(qū)域被壓縮到更低灰度區(qū)間,而較亮的高灰度區(qū)域的灰度值被擴展到較大的灰度區(qū)間變的不那么亮,整體的效果就是圖像的對比度增加了,但是由于亮度區(qū)域被擴展,也就不那么亮了。

γ<1時,會將灰度值較小的低灰度區(qū)域擴展到較寬的灰度區(qū)間,而將較寬的高灰度區(qū)域壓縮到較小的灰度區(qū)間。

這樣變換的效果就是,低灰度區(qū)域擴展開來,變亮;而寬的高灰度區(qū)域,被壓縮的較窄的區(qū)間,也變亮了,故變換后的整體效果是變亮了。

基于OpenCV的灰度變換實現(xiàn)

灰度變換屬于點對點的一一變換,在實現(xiàn)的時候,可以利用查表法。也就是實現(xiàn)將[0,255]區(qū)間的各個灰度值的變換后的值計算出來,在變換的時候直接根據(jù)灰度值進行查表得到變換后的結果。

其實現(xiàn)如下:

/////////////////////////////////////////////////////////////////////
//
//灰度線性變換函數(shù)
//參數(shù):
//src,輸入原圖像
//dst,輸出圖像,類型為CV_32F,大小及通道數(shù)與原圖像相同
//mapping,灰度映射表,可以根據(jù)不同的變換函數(shù),提前計算好圖像的灰度映射表
//
////////////////////////////////////////////////////////////////////
voidgray_trans(constMat&src,Mat&dst,float*mapping)
{
intchannels=src.channels();
if(channels==1)
{
dst=Mat(src.size(),CV_32FC1);
for(inti=0;i(i);
constuchar*p2=src.ptr(i);
for(intj=0;j(i);
constuchar*p2=src.ptr(i);
for(intj=0;j

其調(diào)用也比較簡單,根據(jù)具體的灰度變換函數(shù),填充灰度映射表即可,以伽馬變換為例:

floatpixels[256];
for(inti=0;i

總結

本文主要對圖像的幾種常見的灰度變換進行了總結。

圖像反轉(zhuǎn),是圖像線性變換的一種,可以得到圖像負片,能夠有效的增強圖像的暗色區(qū)域中的白色或者灰色細節(jié)

對數(shù)變換,擴展圖像中的低灰度區(qū)域,壓縮圖像中的高灰度區(qū)域,能夠增強圖像中的暗色區(qū)域的細節(jié);反對數(shù)變換與此相反。對數(shù)變換還有個重要作用是,能夠壓縮圖像灰度值的動態(tài)范圍,在傅立葉變換中能夠顯示更多的變換后的頻譜細節(jié)。

伽馬變換,主要用于圖像的校正,根據(jù)參數(shù)γ的選擇不同,能夠修正圖像中灰度過高(γ>1)或者灰度過低(γ<1)

責任編輯:彭菁

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 圖像
    +關注

    關注

    2

    文章

    1078

    瀏覽量

    40345
  • 圖像處理技術

    關注

    0

    文章

    32

    瀏覽量

    10052
  • 頻譜
    +關注

    關注

    7

    文章

    873

    瀏覽量

    45527
  • 函數(shù)
    +關注

    關注

    3

    文章

    4256

    瀏覽量

    62223

原文標題:圖像處理基礎:圖像的灰度變換

文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關推薦

    基于FPGA的HDTV視頻圖像灰度直方圖統(tǒng)計算法設計

    本文介紹了如何在FPGA 中利用Block RAM 的特殊結構實現(xiàn)HDTV 視頻增強算法中灰度直方圖統(tǒng)計。灰度直方圖統(tǒng)計灰度直方圖統(tǒng)計是圖像處理過程中很常用的一個步驟,簡單來講,就是對
    發(fā)表于 05-14 12:37

    怎樣用Labview的vision相關模塊實現(xiàn)圖像灰度掃描以及灰度差分

    怎樣用Labview的vision相關模塊實現(xiàn)圖像灰度掃描以及灰度差分,可以詳細點:具體用到哪些模塊,求賜教。
    發(fā)表于 06-26 20:08

    用labview獲取圖像灰度

    `要實現(xiàn)的功能是:給出一幅圖像,能夠得到圖像中沒一點的灰度值,從而能夠用各點的灰度值進行計算,對圖像的清晰度進行評價。新手,現(xiàn)在一點思路都沒
    發(fā)表于 07-12 20:44

    VHDL生成灰度圖像

    大神們,有誰會用VHDL語言生成8位灰度圖像的思路呢?
    發(fā)表于 12-07 15:57

    請問TFT_LCD支持灰度圖像嗎?

    我打算將一幅彩色圖像轉(zhuǎn)換為灰度圖像,請問能在我們的TFT評上顯示出來嗎?聽說TFT只支持RGB565?
    發(fā)表于 07-30 00:11

    LabVIEW和VDM提取色彩和生成灰度圖像

    LabVIEW和VDM提取色彩和生成灰度圖像在LabVIEW中使用視覺開發(fā)模塊(Vision Development Module)。如何將彩色圖像轉(zhuǎn)換為灰度
    發(fā)表于 05-26 20:39

    灰度相關和區(qū)域特征的圖像拼接算法

    本文提出一種結合灰度特點和區(qū)域特征的圖像拼接算法。首先采用灰度直方圖均衡化的方法降低光照條件不同造成的灰度差異;其次為減少匹配塊的計算量,在選取的特征塊上計算
    發(fā)表于 03-07 15:34 ?60次下載
    <b class='flag-5'>灰度</b>相關和區(qū)域特征的<b class='flag-5'>圖像</b>拼接算法

    常見水印攻擊對灰度圖像位平面噪聲分布研究_馮思玲

    常見水印攻擊對灰度圖像位平面噪聲分布研究_馮思玲
    發(fā)表于 03-19 11:28 ?0次下載

    基于OpenCV的灰度圖像偽彩色化研究邊栓成

    基于OpenCV的灰度圖像偽彩色化研究_邊栓成
    發(fā)表于 03-17 08:00 ?2次下載

    基于分塊顏色矩和灰度共生矩陣的圖像檢索_岳磊

    基于分塊顏色矩和灰度共生矩陣的圖像檢索_岳磊
    發(fā)表于 03-17 09:57 ?1次下載

    基于灰度特征的虹膜圖像質(zhì)量評價方法_羅曉慶

    基于灰度特征的虹膜圖像質(zhì)量評價方法_羅曉慶
    發(fā)表于 03-16 11:05 ?0次下載

    基于PCNN和最大灰度圖像分量的彩色圖像分割_李建兵

    基于PCNN和最大灰度圖像分量的彩色圖像分割_李建兵
    發(fā)表于 03-19 19:12 ?0次下載

    MATLAB如何實現(xiàn)圖像增強灰度變換直方圖均衡匹配

    在MATLAB數(shù)字圖像處理領域,如何實現(xiàn)空間域圖像增強的灰度變換,以及圖像直方圖的均衡和匹配(配準)?本文通過大量的圖片增強案例,從圖像的顯
    發(fā)表于 01-13 21:56 ?1w次閱讀
    MATLAB如何實現(xiàn)<b class='flag-5'>圖像</b>增強<b class='flag-5'>灰度</b>變換直方圖均衡匹配

    如何使用FPGA實現(xiàn)圖像灰度級拉伸算法

    為了調(diào)整圖像數(shù)據(jù)灰度,介紹了一種圖像灰度級拉伸算法的FPGA實現(xiàn)方法,并針對FPGA的特點對算法的實現(xiàn)方法進行了研究,從而解決了其在導引系統(tǒng)應用中的實時性問題。仿真驗證結果表明:基于F
    發(fā)表于 04-01 14:14 ?1次下載
    如何使用FPGA實現(xiàn)<b class='flag-5'>圖像</b><b class='flag-5'>灰度</b>級拉伸算法

    為什么圖片識別要將彩色圖像灰度化?

    ? ? 先前在為大家介紹OCR識別技術時,在圖像預處理部分提到了灰度化,大家可能會產(chǎn)生疑惑: 為什么做圖片識別要將彩色圖像灰度化呢? ? 正式解釋這個問題之前,我們需要了解, 什么是
    發(fā)表于 05-28 11:36 ?1921次閱讀
    為什么圖片識別要將彩色<b class='flag-5'>圖像</b><b class='flag-5'>灰度</b>化?