国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

VB圖像處理之圖像的色彩糾正

2019-11-18 17:41:38
字體:
供稿:網(wǎng)友
前幾次為大家講述了如何通過操作像素來實現(xiàn)一些簡單的濾鏡效果。這次想更大家講述一下用灰度直方圖均衡來調(diào)整圖像的色彩空間。

  先給大家介紹一下一些顏色的小常識。以電腦的顏色來說,顏色的組成是右紅、綠、藍(lán)三種顏色組成。以最容易的24位色來說,紅色、綠色、藍(lán)色各用1個字節(jié)來表示,1個字節(jié)有8位,所以加在一起正好是24位。由于電腦無法用連續(xù)的模擬值來表示一個自然量,只能將它們分成一段一段來顯示,分得越多就越接近自然。1個字節(jié)是2^8=256,所以在24位色中每一個單色都有256種不同的強(qiáng)度,三種顏色按照不同的強(qiáng)度混合,可以得到2^24種色彩。大約可以表達(dá)1677萬種色彩,對于人的眼睛來說已經(jīng)和自然色彩沒有區(qū)別了。

  如果我們用photoshop來打開一張圖片,選擇LEVEL工具,就可以察看這張圖片的色彩分布了。

  原圖:

->->

  灰度通道:

->->

  紅色通道:

->->

  綠色通道:

->->

  藍(lán)色通道:

->->

  由上面的四個通道圖,我們可以發(fā)現(xiàn),這張圖片的色彩都是以低亮度為主,紅綠藍(lán)三色在高亮度區(qū)域的分布都很少,而灰度通道也表明整張圖片的亮度值很低。

  在前面的文章中,我已經(jīng)和大家講過,人眼對于灰度(亮度)的敏感程度最高。因此,如果我們能通過一種方法把這章圖片的灰度提高,那么它在我們的視覺中就會有更好的表現(xiàn)。

  或許有朋友說只要把圖片加亮度,不是就可以了嗎?不錯,通過提高所有色彩的亮度,可以把原來處于第亮區(qū)域的色彩轉(zhuǎn)移到中亮度或高亮度區(qū)域,但是大家也知道,在算法中,加亮度只是很簡單的在R、G、B三個值后面直接加上一個偏移量:NewRed=OldRed Offset,NewGreen=OldGreen Offset,NewBlue Offset,但是這種做法只是“粗暴”地將整個色彩空間搬了一個位置,而沒有改變其分布。請看下面,我在這張圖片加上了120點亮度:再看看此時的色彩分布你就知道我為什么說它“粗暴”了。

  灰度通道:

->->

  紅色通道:

->->

  綠色通道:

->->

  藍(lán)色通道:

->->

  可以看到,原圖上的高亮度部分的色彩信息全部丟失,而低亮度部分(0-120)則是一片空白,如果說原來的圖片是2^8×2^8×2^8一共1677萬色的話,那么現(xiàn)在的圖片則是:(256-120)^3=251萬色,也就是說,通過我們給圖片加了120點的亮度,我們丟失了一大半的顏色信息。

  (選擇加120點亮度是為了使圖片的整體亮度和直方圖均衡后的亮度相當(dāng),易于比較。)

  那么,有什么方法可以在不丟失,或丟失很少的顏色信息的前提下做到是圖片顯示更好呢?

  有,這就是今天要說的“灰度直方圖均衡”的方法。

  先給大家看一下效果:下面是將原來的圖片通過灰度直方圖的方法處理后的效果和前面的比較。

  原圖:

->->

  提高亮度120:

->->

  灰度直方圖均衡:

->->

  通過直方圖均衡后的顏色分布如下:

  灰度通道:

->->

  紅色通道:

->->

  綠色通道:

->->

  藍(lán)色通道:

->->

  通過對比,我們可以發(fā)現(xiàn),灰度直方圖均衡,是對原圖中的色彩分布按照出現(xiàn)的頻率作了一個分布。

  將出現(xiàn)最多的色彩“分”開,將出現(xiàn)很少的色彩“擠”得更緊,這樣作的好處就是把我們眼睛所看到的主體表示得更鮮明了。

  好了,關(guān)于效果,也已經(jīng)說得很多了,下面我們就來說明一下這個算法是如何實現(xiàn)的。
  首先,我們需要獲取要處理的圖片中所有像素的色彩分布統(tǒng)計,也就是上面的幾個通道所作那樣。

  假設(shè)有一張圖(我們直接用灰度來表示):

->1005020
204050
100250200->

  統(tǒng)計入下:

->20:2
40:1
50:2
100:2
200:1
250:1->

  這張圖一共有9個像素,我們用比例來表示每種顏色的出現(xiàn)比例:

->20:2/9
40:1/9
50:2/9
100:2/9
200:1/9
250:1/9->

  由于所有的色彩出現(xiàn)的次數(shù)不可能超過圖片的總像素,因此,將所有色彩的比例相加也不會超過1(大家已經(jīng)可以看出正好是1)

  最后我們按照從低到高的順序,把各個色彩的比例進(jìn)行加權(quán)統(tǒng)計,也就是當(dāng)前點的“權(quán)”等于該點的原有比例加上前一個點的“權(quán)”,我們得到一個新的統(tǒng)計表:

->20:2/9
40:3/9
50:5/9
100:7/9
200:8/9
250:9/9->

  最后,根據(jù)這個新的統(tǒng)計表,我們來把像素的亮度用一個新的亮度來代替,算法為:

  新亮度=該點“權(quán)”×255

->20:2/9>>20(第一點不動,依然用20)
40:3/9×255=85
50:5/9×255=141
100:7/9×255=198
200:8/9×255=226
250:9/9×255=255->

  這時我們得到了新的圖:

->100502019814120
204050>>1085141
100250200198255226->

  原圖中相對出現(xiàn)頻率多的部分的寬度變大了。而出現(xiàn)較少的部分則變窄了。

  所以,灰度直方圖均衡的作用就是把一張圖片上出現(xiàn)多的色彩拓展,而把出現(xiàn)少的色彩壓縮。

  從而得到了更“均衡”的色彩分布。

  下面附上我的例程:

->   ForY=0ToOutPutHei
    R=ColVal(2,X,Y)
    G=ColVal(1,X,Y)
    B=ColVal(0,X,Y)
    Gray=R*3 G*6 B
    Gray=Gray/10
    .ColorCount(Gray)=.ColorCount(Gray) 1
   Next
  Next

  .PixcelCount=X*Y'獲得圖片的像素總量
  C=1/.PixcelCount

  .ColRatio(0)=.ColorCount(M,0)*C'計算每個亮度的出現(xiàn)比例
  .NewVal(0)=0'色值最小的色彩總是為0,不參與計算
  L=0
  ForI=1To255
   .ColRatio(I)=.ColorCount(I)*C .ColRatio(L)'進(jìn)行加權(quán)
   .NewVal(I)=.ColRatio(I)*255'計算新的顏色索引
   L=L 1
  Next

  ForX=0ToOutPutWid
   ForY=0ToOutPutHei
    R=Colval(2,X,Y)'讀取原來點的顏色
    G=Colval(1,X,Y)
    B=Colval(0,X,Y)
    R=.NewVal(R)'查表得到新的顏色
    G=.NewVal(G)
    B=.NewVal(B)
    ColOut(2,X,Y)=R'把新的顏色放到輸出數(shù)組中
    ColOut(1,X,Y)=G
    ColOut(0,X,Y)=B
   Next
  Next
 EndWith

 Done=True
 TimeFilter=timeGetTime-TimeFilter
 ExitSub
ErrLine:
 Done=True
 MsgBoxErr.Descr
iption
EndSub->
->


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 慈利县| 镇远县| 玉环县| 闽清县| 个旧市| 灵山县| 福泉市| 峡江县| 资溪县| 曲麻莱县| 井冈山市| 汪清县| 铜鼓县| 时尚| 台南市| 河北省| 扶风县| 昭觉县| 鱼台县| 兴宁市| 大连市| 潮安县| 深泽县| 甘南县| 平原县| 南充市| 吴忠市| 桑日县| 襄垣县| 达拉特旗| 讷河市| 司法| 英吉沙县| 五家渠市| 长治市| 汉阴县| 洱源县| 同江市| 仪征市| 慈利县| 娄底市|