亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

在16色模式下顯示256色及全彩色

2019-11-17 05:29:04
字體:
來源:轉載
供稿:網友
摘 要 該文描述了在VGA16色圖形模式下顯示256色及全彩色圖像的抖動算法,并給出了顯示BitMap圖像的C語言程序。
    要害詞 抖動算法 亮度矩陣 顯示
    在編寫有關圖像顯示的軟件時,有時為了軟件的兼容性和通用性,不得不采用VGA標準的圖形模式,這就涉及到如何在16色圖形模式下顯示256色及全彩色圖像的問題。解決這一問題有兩種方法。一種是采用色彩近似的方法,即根據需要顯示的全部顏色,經過尋優來選擇16種最具代表性的顏色,每一種顏色都用這16種顏色中最接近的一種來代替。《計算機世界月刊》的《用集群方法進行顏色選擇》一文具體描述了該方法。但事實上,該方法僅對于某些理想的情況適用,而對于更普遍的情況,該方法無論從運算速度還是從處理效果來講,都不可能令人感到滿足,因而不宜在實際中運用。另一種方法是被眾多商品化軟件所廣泛采用的抖動技術,其原理是利用多種可見顏色的組合來模擬一種不可見的顏色。目前,關于彩色圖像抖動算法的資料不多。筆者通過對灰度圖像處理算法及Windows環境下一些圖像處理軟件的剖析,得出了抖動算法的一般原理和實現方法。
    一、抖動算法原理
    我們知道,在256色及全彩色圖像中,每一種顏色均由R、G、B三個顏色分量組成,而每一個分量又一般由一個字節表示。這樣,每一個顏色分量可有256級亮度變化。
    本算法的要害在于引入亮度矩陣的概念,即采用一個16×16的矩陣來表示每一個顏色分量的亮度值,不同亮度值對應著矩陣的不同排列。矩陣全為0時對應亮度0,全為255時對應亮度255。
    當亮度值為L時,亮度矩陣中將有[L255×256]個255及[(1-L255)×256]個0,此時,矩陣的平均亮度值為
    L'={[L/255×256]×255+[(1-L/255)×256]×0}/256=L
    這就是說,矩陣的平均亮度正好為顏色分量的實際亮度。
    假設某一顏色C的R、G、B三個顏色分量的亮度矩陣分別為:
@@01A04600.GIF;公式一@@
    其中rmn、gmn、bmn(0≤m, n≤15)取值為0或15。
    將上述三個矩陣作疊加運算,得
@@01A04601.GIF;公式二@@
    其中的Cmn為表1中由rmn、gmn、bmn所確定的顏色值。表1為VGA16色圖形模式下的標準調色板(并非設置模式后的缺省調色板)。顯然,Cmn只可能為0及9~15之中的一個。由此方法得到的矩陣Mc即可視為顏色C的模擬矩陣。由于顏色C的R、G、B三個顏色分量與亮度矩陣MR、MG、MB有著相等的亮度值,所以矩陣MC從視覺效果上來講能很好地模擬顏色C。但在顯示時,不可能用整個這樣的矩陣來替代一個像素點,那將導致整幅圖像長寬均變成原圖的16倍。實際的做法是:若該像素點距離圖像原點的座標為(X,Y),則令:
    m=Y mod 16
    n=X mod 16       (1)
    此時,可用MC中的顏色Cmn來顯示該像素。
@@01A04602.GIF;表1 16色圖形模式標準調色板@@
    二、算法實現
    1.亮度矩陣的表示
    算法中要用到257個16×16的亮度矩陣,假如對每一個都分別表示的話,將占用很大的內存空間(大于64K)。由于亮度矩陣的排列及增長均有一定的規律性,我們只需要采用一個16×16的矩陣即可。該矩陣中256個元素的取值分別為0~255,按一定規律排列。令其為:
@@01A04603.GIF;公式三@@
    亮度為L時的矩陣可由H變化而來,其中
@@01A04604.GIF;公式四@@
    2.顏色查找表算法中只用到了顏色0及9~15,我們可以忽略其他項并將有用部分表示為一個三維數組形式的顏色查找表,如表2所示。此時,r, g, b值作為數組下標,取值為0或1。
與之相應,我們將(2)式變為
@@01A04605.GIF;公式三@@
    3.每一像素的顯示步驟
    ①對256色圖像,由顏色索引值查顏色映射表獲取R、G、B值;對全彩色圖像,直接讀取R、G、B值;
    ②根據像素座標(X,Y),由(1)式求得m, n;
    ③根據R、G、B值,由(3)式求得rmn、gmn、bmn;
    ④由rmn、gmn、bmn查表2得顏色值C;
    ⑤將像素以顏色C顯示于(X,Y)處。
    本文所附程序用于在16色圖形模式下顯示256色及全彩色BitMap圖像。
    關于BitMap圖像的格式及讀取方法,許多資料均有介紹,這里不再贅述。
    該程序由Turbo C 2.0及Borland C 3.1編譯,運行通過。運行方法為:
    show文件名.BMP
@@01A04606.GIF;公式三表2 顏色查找表@@
    事實證實,采用本文所描述的算法,可以得到與許多商品化軟件相似的處理速度和處理效果。
    源程序:
    #include<stdio.h>
    #include<dos.h>
    #include<stdio.h>
    #include<conio.h>
    #define NoError 0
    #define ErrorFileOpen1
    #define ErrorFileType 2
    #define ErrorImageColor 3
    typedef strUCt tagB99vMAPFILEHEADER {
        unsigned int   bfType;
        unsigned longbfSize;
        unsigned intbfReserved1;  unsigned intbfReserved2;
        unsigned longbfoffBits;
    } B99vMAPFILEHEADER;
    typedef struct tagB99vMAPINFOHEADER {
        unsigned longbiSize;
        unsigned long  biWidth;
        unsigned longbiHeight;
        unsigned intbiplanes;
        unsigned intbiBitCount;
        unsigned long biComPRession;
        unsigned long biSizeImage;
        unsigned long biXPelsPerMeter;
        unsigned long biYPelsPerMeter;
        unsigned long biClrUsed;
        unsigned long biClrImportant;
    } B99vMAPINFOHEADER;
    typedef struct tagRGBQUAD {
        unsigned char rgbBlue;
        unsigned char rgbGreen;
        unsigned charrgbRed;
        unsigned char rgbReserved;
    } RGBQUAD;
    void main(int argc,char *argv[]);
    int ShowBmp(char *FileName);
    int GetColor(unsigned char R,unsigned char G, unsigned char B,int X,int Y);
    void SetVideoMode(unsigned char Mode);
    void SetPalReg(unsigned char *palReg);
    void SetDacReg(unsigned char *DacReg, int Color, int Count);
    void PutPixel(int X, int Y,unsigned char Color);
    unsigned char PalReg[17]= {  0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0};
    unsigned char StandardPal[48]= {
    0, 0, 0, 32, 0, 0, 0,32, 0, 32,32, 0,   0, 0,32, 32, 0,32, 0,32,32, 32,32,
32,  48,48,48, 63, 0, 0, 0,63, 0, 63,63, 0,   0, 0,63, 63, 0,63, 0,63,63, 63,6
3,63,};
    unsigned char LightnessMatrix [16][16]= {
    { 0,235,59,219,15,231,55,215,2,232,56,217,12,229,52,213},
    {128,64,187,123,143,79,183,119,130,66,184,120,140,76,180,116},
    {33,192,16,251,47,207,31,247,34,194,18,248,44,204,28,244},
    {161,97,144,80,175,111,159,95,162,98,146,82,172,108,156,92}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美国产日产韩国视频| 欧美日韩中文字幕在线视频| 成人黄在线观看| 国产日韩欧美中文| 欧美丰满少妇xxxxx| 亚洲激情久久久| 中文字幕精品在线| 久久精品中文字幕| 国产精品日韩欧美大师| 欧美大秀在线观看| 大桥未久av一区二区三区| 亚洲精品www久久久久久广东| 亚洲欧美日韩一区二区在线| 亚洲人成网站免费播放| 欧美日韩成人黄色| 日韩在线小视频| 中文字幕亚洲第一| 亚洲欧美日韩第一区| 在线视频精品一| 黑人巨大精品欧美一区二区| 日韩网站在线观看| 91色精品视频在线| 欧美另类老女人| 91美女高潮出水| 国产成人97精品免费看片| 欧美福利视频网站| 欧美日韩中文字幕综合视频| 国产在线日韩在线| 色偷偷偷亚洲综合网另类| 国模私拍视频一区| 国产精品你懂得| 亚洲欧美国产精品va在线观看| 亚洲天堂日韩电影| 97人洗澡人人免费公开视频碰碰碰| 国产精品揄拍500视频| 国产精品私拍pans大尺度在线| 在线日韩日本国产亚洲| 国内精品中文字幕| 91国自产精品中文字幕亚洲| 欧美成人精品一区| 国产高清视频一区三区| 欧美亚洲国产精品| 国产一区二区久久精品| 色噜噜狠狠狠综合曰曰曰| 久久久久久久久久国产精品| 亚洲色图25p| 亚洲天堂开心观看| 精品高清美女精品国产区| 国产精品jizz在线观看麻豆| 欧美成人久久久| 国产精品丝袜视频| 亚洲天堂av在线免费观看| 精品亚洲va在线va天堂资源站| 久久久99久久精品女同性| 91精品国产99久久久久久| 91精品国产乱码久久久久久久久| 日韩欧美精品免费在线| 亚洲视频axxx| 日韩精品黄色网| www.日韩不卡电影av| 亚洲四色影视在线观看| 欧美综合在线第二页| 久久国产加勒比精品无码| www.日本久久久久com.| 欧美精品videos另类日本| 亚洲欧洲在线视频| 国产亚洲欧洲高清| 粉嫩av一区二区三区免费野| 亚洲欧美在线免费观看| 亚洲精品欧美日韩专区| 午夜精品久久久久久久99热| 亚洲成人亚洲激情| 国产精品久久久久久久久久免费| 国产精品久久久久久亚洲调教| 亚洲3p在线观看| 国产精品一区二区在线| 91精品国产九九九久久久亚洲| 狠狠爱在线视频一区| 亚洲国产精品yw在线观看| 久久人人爽人人爽人人片亚洲| 精品人伦一区二区三区蜜桃免费| 大桥未久av一区二区三区| 久久国产加勒比精品无码| 欧美高清一级大片| 精品国产91乱高清在线观看| 日韩不卡在线观看| 国语自产精品视频在免费| 久久成人精品一区二区三区| 亚洲免费人成在线视频观看| 成人在线一区二区| 超碰91人人草人人干| 国产精品jizz在线观看麻豆| 亚洲第一区中文99精品| 国产亚洲欧美日韩一区二区| 亚洲成色777777在线观看影院| 日韩成人激情视频| 国产亚洲精品久久久久动| 欧美亚洲激情视频| 日韩欧美主播在线| 97视频在线观看网址| 久久精品青青大伊人av| 久久久国产一区| 操日韩av在线电影| 日韩欧美极品在线观看| 精品国产乱码久久久久久天美| 亚洲精品日韩欧美| 国内精品久久久久久| 精品国产精品三级精品av网址| 日韩欧美在线视频| 欧美性xxxx极品hd满灌| 亚洲免费伊人电影在线观看av| 日韩免费电影在线观看| 欧美中文在线字幕| 欧美激情视频一区| 视频在线观看99| 麻豆国产va免费精品高清在线| 国产成人av在线播放| 成人欧美在线观看| 欧美极品少妇xxxxⅹ裸体艺术| 久久久久在线观看| 国产69精品久久久久99| 国产精品尤物福利片在线观看| 91国内免费在线视频| 欧美成人黑人xx视频免费观看| 亚洲国产日韩精品在线| 亚洲黄页视频免费观看| 亚洲欧美日本精品| 欧美xxxx综合视频| 国产精品一香蕉国产线看观看| 欧美精品手机在线| 久久人人爽亚洲精品天堂| 欧美日韩福利电影| 亚洲精品国产精品国自产观看浪潮| 久久精品国产欧美亚洲人人爽| 亚洲人成电影网站色…| 精品亚洲一区二区三区在线观看| 欧美精品999| 国产精品电影在线观看| 91久久久久久久一区二区| 91久久综合亚洲鲁鲁五月天| 亚洲精品一区二三区不卡| 久久久久久久久久久免费精品| 91国内精品久久| 欧美大全免费观看电视剧大泉洋| 欧美专区在线播放| 久久亚洲精品毛片| 欧美性猛交xxxx免费看| 精品久久久久久亚洲国产300| 欧美乱大交xxxxx另类电影| 日韩精品在线免费观看视频| 最好看的2019年中文视频| 亚洲欧美自拍一区| 亚洲国产精品va在线看黑人动漫| 久久天天躁狠狠躁夜夜av| 国产不卡一区二区在线播放| 色多多国产成人永久免费网站| 黑人精品xxx一区一二区| 国产精品最新在线观看| 久久精品在线播放| 色综合久综合久久综合久鬼88| 久久伊人91精品综合网站| 欧洲一区二区视频| 色香阁99久久精品久久久| 超碰91人人草人人干|