亚洲免费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
        在线观看免费人成视频| 女人被狂躁c到高潮视频| 国产影院一区二区在线| 精品久久一品二品三品| 91成人自拍在线观看| 26uuu在线亚洲欧美| 99999久久久久久亚洲| 久久婷婷人人澡人人喊人人爽| 吃奶摸下激烈床震视频试看| 自拍偷自拍亚洲精品情侣| 中文字幕 人妻熟女| 日中文字幕在线| 美女超薄透明丝袜美腿| 国产三级黄色的在线观看| 国产丝袜在线福利观看| 亚洲中文字幕一区二区三区多人| 久久精品国产av麻豆五月丁| 欧美噜噜久久久xxx| 久久久久久久波多野结衣高潮| 日本成本人三级在线观看| 亚洲中文字幕在线一区二区三区| 亚洲xx视频| 久久亚洲av午夜福利精品西区 | 久久国产精品免费一区二区三区| 国产91久久麻豆黄片| 中文字幕av伊人av无码av| 青青草国产精品一区二区| 精品一品国产午夜福利视频| 日日噜噜夜夜狠狠久久av| 在线小黄片视频免费播放| 亚洲无av在线中文字幕| 久久婷婷香蕉热狠狠综合| 91精品国产丝袜在线拍| 国产亚洲视频在线观看播放| 伊人久久综合狼伊人久久| 中文字字幕在线中文乱码解| 超碰cao已满18进入离开官网| 2019年92午夜视频福利| 欧美日韩区1区2区3区| 被驯服人妻中文字幕日本| 亚洲区福利视频免费看|