• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于QT的數(shù)字圖像的灰度化處理程序設(shè)計(jì)

      2015-02-24 03:23:59趙之源
      決策與信息 2015年23期
      關(guān)鍵詞:表項(xiàng)像素點(diǎn)亮度

      趙之源

      北京郵電大學(xué) 北京 100876

      基于QT的數(shù)字圖像的灰度化處理程序設(shè)計(jì)

      趙之源

      北京郵電大學(xué) 北京 100876

      介紹了使用QT對(duì)BMP圖像進(jìn)行灰度化處理的相關(guān)概念和方法。根據(jù)BMP格式圖像的格式類型和存儲(chǔ)原理,介紹對(duì)BMP格式圖像進(jìn)行讀取和寫入方法,并在此基礎(chǔ)上介紹了對(duì)BMP圖片進(jìn)行灰度化的方法。

      數(shù)字圖像;灰度化處理;QT;C++;位圖

      大家生活中很多情況下需要將一張彩色的圖片轉(zhuǎn)變成黑白的圖片,也就是灰度圖,但是大部分人都是直接使用PS或美圖秀秀這些圖片處理的軟件進(jìn)行,而對(duì)圖片灰度化的過程不是十分了解甚至一無所知。很多時(shí)候我們需要把彩色圖像轉(zhuǎn)換為黑白圖像然后進(jìn)行相關(guān)的計(jì)算等。而QT的界面設(shè)計(jì)使得開發(fā)帶界面的軟件更為方便,且可用C++語言編寫,運(yùn)行效率高,執(zhí)行速度快,適合圖像處理。因此用QT開發(fā)一款圖像灰度化的處理程序十分方便也能幫助我們理解灰度化的原理和過程。

      1、灰度化原理

      生活中,我們見到的大部分物品都是彩色的,我們生活在一個(gè)五顏六色的世界中,我們通常用來描述一個(gè)物體的顏色的諸如赤、橙、黃、綠、青、藍(lán)、紫這些顏色名詞有很多,但是即使是這樣,仍然不能涵蓋自然界的所有顏色或者說即使用這些詞來描述一個(gè)物體的顏色仍舊不能描述得很準(zhǔn)確。其實(shí)每一種復(fù)雜的顏色都是可以用紅綠藍(lán)這三種顏色按照不同的比例調(diào)配出來的,所以不同的顏色種類根據(jù)三種顏色所占比例的不同是不同的,數(shù)量是非常大的。

      同樣,不同的色光還有不同的亮度,同樣是紅色,有的比較亮,有的比較暗。由此可見,顏色是無窮無盡的,那黑白圖像又是怎么一回事呢?圖像的灰度化的原理又是什么呢。

      其實(shí)圖像灰度化就是根據(jù)公示計(jì)算出每個(gè)像素點(diǎn)的亮度,從而直接用亮度來表示圖片,而不是用以前的R(紅)、G(綠)、B(藍(lán))值。計(jì)算公示如下:

      這是一個(gè)矩陣計(jì)算公示,公式中的Y就是亮度值,實(shí)際上就是通過原像素點(diǎn)的紅綠藍(lán)的值計(jì)算出亮度值。通?;叶葓D的數(shù)據(jù)用8位進(jìn)行存儲(chǔ),這樣的圖片灰度有256級(jí),也就是說這種灰度化的圖片中包含256中不同亮度的像素點(diǎn),255是白色,0是黑色,中間是不同程度的灰色。

      而對(duì)于不同位數(shù)的BMP圖像的灰度化過程也是不同的。

      對(duì)于2 4位的B M P圖像只需要通過公式Y(jié)=0.299R+0.587G+0.144B計(jì)算出各像素點(diǎn)的亮度值,然后將亮度值附給該點(diǎn)的RGB值即R=B=G=Y就行了。

      而對(duì)于其他位數(shù)的灰度化也有兩種方法。如對(duì)于8位的BMP圖像

      Ⅰ.獲取第一個(gè)顏色表項(xiàng)中的R G B值,然后利用公式Y(jié)=0.299R+0.587G+0.144B計(jì)算出該顏色的亮度值Y,并令該顏色表項(xiàng)的RGB值都等于此亮度值Y。同理,再完成對(duì)剩余所有顏色表項(xiàng)的處理,便可實(shí)現(xiàn)灰度化。

      Ⅱ.在8位BMP文件的位圖數(shù)據(jù)中,首先獲取任意第i行,第j列像素點(diǎn)的顏色表索引值index,根據(jù)該索引值找到與其對(duì)應(yīng)的顏色表項(xiàng)color[index],并獲取該顏色表項(xiàng)的RGB值,然后利用公式Y(jié)=0.299R+0.587G+0.144B計(jì)算出該顏色的亮度值Y,再令index=Y;在完成上述處理之后,再對(duì)顏色表項(xiàng)按順序灰度化,即color[index]的R=G=B=index。至此,8位BMP文件的位圖數(shù)據(jù)就表示每個(gè)像素真實(shí)的亮度值。這里介紹的示例程序采用上述方法ii實(shí)現(xiàn)灰度化。

      2、程序設(shè)計(jì)步驟

      程序是基于QT設(shè)計(jì)的,使用C++編程語言,所以設(shè)計(jì)過程包括界面設(shè)計(jì)和程序設(shè)計(jì)思路。

      2.1 程序界面設(shè)計(jì)

      程序需要用戶輸入數(shù)據(jù),故設(shè)計(jì)用戶數(shù)據(jù)接口即可。

      2.2 程序流程設(shè)計(jì)

      程序設(shè)計(jì)的實(shí)現(xiàn)過程為:

      (1)讀取BMP文件的文件頭、信息頭、顏色表、像素點(diǎn)數(shù)據(jù)等位圖數(shù)據(jù)。

      其中QT中封裝的獲得文件名代碼如下:

      namebmp=QFileDialog::getOpenFileName(this,"打開bmp文件","/","files(*.bmp)");//獲得bmp文件名

      (2)根據(jù)灰度化原理進(jìn)行處理,

      對(duì)8比特的BMP圖片進(jìn)行灰度化的代碼如下:

      for(inti=0;i

      {

      for(intj=0;j

      {

      index=data[i][j];

      ////////24bit

      if(Bitmapinfoheader.biBitCount==24)

      {

      doubley3=0.299*data[i][j*3]+0.587*data[i][3*j+1]+0.114*data[i] [3*j+2];

      inty4=(int)((y3+0.5)*10/10.0);

      if(ui->checkBox->isChecked())

      y4=255;

      data[i][j*3]=y4;

      data[i][j*3+1]=y4;

      data[i][j*3+2]=y4;

      }

      ////////8bit

      if(Bitmapinfoheader.biBitCount==8)

      y0=0.299*Rgbquad[index].rgbRed+0.587*Rgbquad[index]. rgbGreen+0.114*Rgbquad[index].rgbBlue;

      (3)將新圖片數(shù)據(jù)寫到新文件中。

      ///////寫新文件

      FILE*fp1;

      fp1=fopen((dir1+"/"+name1).toStdString().c_str(),"wb");

      fwrite(&Bitmapfileheader,14,1,fp1);

      fwrite(&Bitmapinfoheader,40,1,fp1);

      ///////8bit

      if(Bitmapinfoheader.biBitCount==8)

      {

      fwrite(Rgbquad,4*colornum,1,fp1);

      for(intn=0;n

      fwrite(data[n],w1,1,fp1);

      }

      3、程序測試實(shí)驗(yàn)

      本實(shí)驗(yàn)用的是500乘500的8位BMP格式的彩色圖像?;叶然Y(jié)果如圖2所示

      4、其他

      這里只介紹了8比特彩色圖像的灰度化,在進(jìn)行4比特圖像的灰度化的過程中時(shí)要注意數(shù)據(jù)部分中,每個(gè)字節(jié)中包含兩個(gè)像素的索引值,每次讀出一個(gè)字節(jié)后需要進(jìn)行處理。

      猜你喜歡
      表項(xiàng)像素點(diǎn)亮度
      一種改進(jìn)的TCAM路由表項(xiàng)管理算法及實(shí)現(xiàn)
      基于ARMA模型預(yù)測的交換機(jī)流表更新算法
      亮度調(diào)色多面手
      基于canvas的前端數(shù)據(jù)加密
      SDN數(shù)據(jù)中心網(wǎng)絡(luò)基于流表項(xiàng)轉(zhuǎn)換的流表調(diào)度優(yōu)化
      亮度一樣嗎?
      基于逐像素點(diǎn)深度卷積網(wǎng)絡(luò)分割模型的上皮和間質(zhì)組織分割
      基于斬波調(diào)制的LED亮度控制
      人生的亮度
      基于Node-Cell結(jié)構(gòu)的HEVC幀內(nèi)編碼
      奉新县| 奉节县| 商洛市| 敦化市| 上栗县| 高邮市| 邯郸县| 灵武市| 平邑县| 鹤岗市| 莒南县| 莲花县| 遂昌县| 晋宁县| 响水县| 屏东市| 遂川县| 徐闻县| 肇源县| 农安县| 安多县| 泰来县| 修水县| 兴宁市| 银川市| 紫云| 磴口县| 册亨县| 南京市| 宜昌市| 尼木县| 长乐市| 新河县| 长阳| 乌什县| 高碑店市| 陆丰市| 汕尾市| 四川省| 芷江| 榆中县|