亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        灰度位圖的定義和轉(zhuǎn)換

        2019-01-20 02:42:06袁智勇劉文林
        中國新技術(shù)新產(chǎn)品 2019年22期
        關(guān)鍵詞:轉(zhuǎn)換

        袁智勇 劉文林

        摘? 要:該文首先介紹了灰度位圖的背景知識(shí),包括灰度位圖的定義、特點(diǎn)、應(yīng)用范圍。接著介紹了全彩色和灰度色彩轉(zhuǎn)換的算法。最后演示了基于GDI+的,將全彩色位圖轉(zhuǎn)換為灰度位圖的核心代碼。該代碼使用了GDI+的Bitmap類,并通過其成員函數(shù)ConvertFormat進(jìn)行位圖格式轉(zhuǎn)換。特點(diǎn)是代碼高度簡單,程序員無須了解位圖格式轉(zhuǎn)換,顏色轉(zhuǎn)換等的細(xì)節(jié),大大降低了編碼難度和復(fù)雜度。

        關(guān)鍵詞:灰度位圖;轉(zhuǎn)換;GDI+

        中圖分類號(hào):TP391? ? ? ? ? ? ? 文獻(xiàn)標(biāo)志碼:A

        0 引言

        網(wǎng)上關(guān)于灰度位圖(grayscale bitmap)的介紹雖然不少,但大多數(shù)都只是觸及點(diǎn)皮毛,沒有交代清楚其原理,使初學(xué)者一知半解。該文對灰度位圖做了一個(gè)原理性的介紹,使初學(xué)者徹底弄明白灰度圖像的原理。同樣的,網(wǎng)上關(guān)于彩色圖像轉(zhuǎn)換為灰度圖像的代碼也很多,但過于煩瑣,該文也介紹了1種簡便的轉(zhuǎn)換方法。

        1 灰度位圖的定義

        顧名思義,灰度位圖的所有像素都是灰色的?;疑且活愄厥獾念伾?,其R(紅色),G(綠色),B(藍(lán)色)三原色分量的值都是一樣的。如果以(R,G,B)的格式表示顏色,那么(0,0,0),(1,1,1),(2,2,2),……,(254,254,254),(255,255,255),總共256種顏色都是灰色。全0的黑色和全255的白色都是灰色的特例,其中黑色最暗,白色最亮。R,G,B三原色分量的大小代表了三原色的亮度,因此各種灰色的差別在于其亮度不同。

        因?yàn)轭伾珒H限于256種灰色(這256種灰色構(gòu)成灰度位圖的顏色表),為了減少存儲(chǔ)空間,灰度位圖統(tǒng)一使用索引位圖的格式來存儲(chǔ)。也就是說,灰度位圖的像素值不是直接存儲(chǔ)為24 bit的(R,G,B)顏色,而是存儲(chǔ)為顏色表的索引號(hào)。例如如果某個(gè)灰度位圖的像素值是1,那么它對應(yīng)的實(shí)際顏色是顏色表中編號(hào)為1的顏色,也就是(1,1,1)??梢钥闯?,索引號(hào)同時(shí)代表了對應(yīng)灰度顏色的亮度。例如,當(dāng)索引號(hào)為0時(shí),對應(yīng)的顏色是黑色(0,0,0),亮度為0;當(dāng)索引號(hào)為255時(shí),對應(yīng)的顏色時(shí)白色(255,255,255),亮度為255。表達(dá)256種索引號(hào)只需8 bit(1字節(jié))數(shù)據(jù),而直接表達(dá)(R,G,B)顏色需要24 bit(3字節(jié))數(shù)據(jù),所以使用索引位圖格式能大大節(jié)省存儲(chǔ)空間。

        將有16 777 216(224)種顏色的24 bit全彩色位圖轉(zhuǎn)換為只有256(28)種灰色的灰度位圖無疑會(huì)丟失圖像的細(xì)節(jié),盡管如此,灰度位圖的應(yīng)用卻非常廣泛。

        首先,這種轉(zhuǎn)換能將彩色圖像轉(zhuǎn)換為黑白圖像,這是一種非常有用的特效。

        其次,這種轉(zhuǎn)換在丟失細(xì)節(jié)的同時(shí),往往能使圖像中物體的輪廓變得更明顯。就像黑白證件照的底片,雖然細(xì)節(jié)很模糊,但人物的輪廓卻很明顯。這使得灰度位圖在文字識(shí)別、圖像識(shí)別中得到了廣泛的應(yīng)用。

        2 顏色轉(zhuǎn)換

        將24bit全彩色位圖轉(zhuǎn)換為8bit灰色位圖的原則是將彩色轉(zhuǎn)換為與之最接近的灰色。關(guān)于什么是最接近,在不同的場合下,解讀是不同的。對于灰度圖像轉(zhuǎn)換,我們是依據(jù)全彩色圖像的亮度,將其轉(zhuǎn)換為同等亮度的灰度顏色。其公式為:

        I= R× 0.299 + G×0.587 + B×0.114 ? ? ? ? ? ? ? (1)

        I代表索引號(hào)。前面提到過,索引號(hào)同時(shí)代表了對應(yīng)灰度顏色的亮度。所以上面的公式實(shí)際上按照全彩色R、G、B顏色分量的亮度,將其映射到對應(yīng)亮度的灰度顏色。0.299、0.587 、0.114分別代表了R、G、B顏色分量的權(quán)重。可以看出,綠色分量的權(quán)重最大,這是因?yàn)槿祟悓G色亮度的變化更敏感。

        3 關(guān)于GDI+

        GDI+是微軟針對傳統(tǒng)的GDI(Graphic Device Interface,圖形設(shè)備界面)技術(shù)的改進(jìn)。和GDI不同,GDI+的編程接口是面向?qū)ο蟮模瑢⒌讓哟a封裝于各種類中,這使得編程難度大大降低。其次,在圖像格式轉(zhuǎn)換、圖像變換等方面引入了很多新的類成員函數(shù),程序員簡單調(diào)用這些函數(shù)就可以完成以前通過GDI無法直接完成的工作。

        舉個(gè)例子,在GDI+中位圖被封裝為Bitmap類,以下C++代碼可以讀取硬盤上的位圖文件test.bmp(假定其為24 bit全彩色位圖),輕松構(gòu)造一個(gè)Bitmap類:

        Bitmap bmp=new Bitmap(L”C:\\test.bmp”);

        下一步,我們可以通過Bitmap的類成員函數(shù)操作test.bmp,例如將其轉(zhuǎn)換為灰度位圖。對應(yīng)的函數(shù)如下:

        ConvertFormat(PixelFormat format,

        DitherType dithertype,PaletteType palettetype,

        ColorPalette *palette,REAL alphaThresholdPercent);

        format參數(shù)指定轉(zhuǎn)換后的位圖的格式,須設(shè)置為PixelFormat8bppIndexed(8bit索引位圖)。

        dithertype參數(shù)指定抖動(dòng)顏色采用的方法,須設(shè)置為DitherTypeSolid(抖動(dòng)到實(shí)體顏色)。

        palettetype參數(shù)指定灰度位圖使用的顏色表(在GDI+中稱為調(diào)色板)的類型,須設(shè)置為PaletteTypeCustom(自定義調(diào)色板)。

        palette為指向灰度位圖的顏色表數(shù)據(jù)結(jié)構(gòu)指針,調(diào)用這個(gè)函數(shù)的關(guān)鍵一步是構(gòu)造顏色表。如何構(gòu)造灰度圖像的顏色表請參考下一節(jié)中的核心代碼。

        alphaThresholdPercent參數(shù)和像素透明化處理有關(guān),一般轉(zhuǎn)換不涉及像素透明化處理,須設(shè)置為0。

        4 核心代碼

        代碼使用visual C++開發(fā),因?yàn)閮H為演示代碼,其他不重要的代碼都已經(jīng)略去。

        void GrayScale(Bitmap* bmp){

        void* p=malloc(sizeof(Gdiplus::ColorPalette)+255*sizeof(ARGB));

        Gdiplus::ColorPalette*cpal=(Gdiplus::ColorPalette*)p;

        for(int i=0;i<256;i++)cpal->Entries[i]=Color::MakeARGB(0,i,i,i);//構(gòu)造顏色表

        cpal->Flags=PaletteFlagsGrayScale;

        cpal->Count=256;

        bmp->ConvertFormat(PixelFormat8bppIndexed,DitherTypeSolid,PaletteTypeCustom,cpal,0);

        free(p);}

        顏色表數(shù)據(jù)結(jié)構(gòu)包含2個(gè)部分:頭和數(shù)據(jù)。頭部有2個(gè)字段Flags和Count。Flags設(shè)置為PaletteFlagsGrayScale,表示顏色表是灰度位圖顏色表。Count設(shè)置為256,表示有256中灰度顏色。數(shù)據(jù)部分是256種灰度顏色,從(0,0,0)一直到(255,255,255)。要注意的是,在標(biāo)準(zhǔn)顏色表中,每種顏色占用32 bit空間,所以要通過宏MakeARGB擴(kuò)充到32 bit。

        5 結(jié)語

        通過GDI+將全彩色圖像轉(zhuǎn)化為灰度圖像是非常簡單的,無須和位圖格式細(xì)節(jié)打交道,也無須直接用公式進(jìn)行色彩轉(zhuǎn)換,非常簡便高效。

        參考文獻(xiàn)

        [1]周鳴揚(yáng),趙景亮.精通GDI+編程[M].北京:清華大學(xué)出版社,2004.

        [2]Ivor Horton.Visual C++2010入門經(jīng)典(第5版)[M].北京:清華大學(xué)出版社,2010.

        猜你喜歡
        轉(zhuǎn)換
        初中語文課堂如何做好教師角色的轉(zhuǎn)換
        淺析生態(tài)城市指標(biāo)在規(guī)劃設(shè)計(jì)中的轉(zhuǎn)換
        變式教學(xué)法在高中數(shù)學(xué)中的應(yīng)用
        如何構(gòu)建新型的師生關(guān)系
        自動(dòng)溫度補(bǔ)償原理與調(diào)節(jié)方法
        科技視界(2016年26期)2016-12-17 17:26:26
        淺議長期股權(quán)投資核算方法的轉(zhuǎn)換
        對當(dāng)代書法藝術(shù)性的思考
        大數(shù)據(jù)時(shí)代檔案管理模式的轉(zhuǎn)換與創(chuàng)新
        資治文摘(2016年7期)2016-11-23 02:29:01
        論英漢語翻譯中語內(nèi)翻譯向語際翻譯的轉(zhuǎn)換
        淺談平面圖與立體圖的思維培養(yǎng)
        人間(2016年28期)2016-11-10 00:10:48
        少妇高潮无码自拍| 欧美放荡的少妇| 色一情一区二| 国产一区二区欧美丝袜| 国产一区二区三区白浆肉丝 | 日韩精品人妻中文字幕有码| 国产黄色三级一区二区三区四区| 日本中国内射bbxx| 久久国产精品二国产精品| 丝袜美腿网站一区二区| 色偷偷亚洲精品一区二区| 亚洲精品国产精品乱码在线观看| 国产精品一区二区久久不卡| av无码天一区二区一三区| 精品av一区二区在线| 多毛小伙内射老太婆| 黑人巨大av在线播放无码| 毛片无码高潮喷白浆视频| 国产鲁鲁视频在线播放| 日韩精品免费在线视频| 久久久精品亚洲一区二区国产av | 国产肥熟女视频一区二区三区 | 亚洲av无码潮喷在线观看| 国产成人免费一区二区三区| 国产在线a免费观看不卡| 日韩国产人妻一区二区三区| 亚洲国产高清在线一区二区三区| 少妇bbwbbw高潮| 99久久国产精品免费热| s级爆乳玩具酱国产vip皮裤| 日韩在线看片| 午夜宅男成人影院香蕉狠狠爱| 激情内射人妻1区2区3区| 人人玩人人添人人澡| caoporon国产超碰公开| 国产精品亚洲一级av第二区| 亚洲欧美综合区自拍另类| 欧美亚洲国产人妖系列视| 亚洲中文字幕一区av| 亚洲人成网网址在线看| 亚洲天堂99|