亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 圖像處理.txt

?? 用數字圖像處理主要是為了修改圖形,改善圖像質量,或是從圖像中提起有效信息,還有利用數字圖像處理可以對圖像進行體積.
?? TXT
?? 第 1 頁 / 共 4 頁
字號:

DstLineBytes-y*DstLineBytes);

        for(x=0;x<bi.biWidth;x++){

            //R,G,B各取4位

            Blue=(int)(*(lpPtr++) & 0xf0);

            Green=(int)(*(lpPtr++) & 0xf0);

            Red=(int)(*(lpPtr++) & 0xf0);

            //拼成一個12位整數

            ClrIndex=(Blue<<4) + Green +(Red >>4);

            for (i = 0; i < PalCounts;i++)

                if (ClrIndex == ColorIndex[i]){

//根據12索引值取得對應的調色板中的索引值

                    *(lpTempPtr++)=(unsigned char)ColorHits[i];

                    break;

                }

        }

    }

    if(hBitmap!=NULL)

        DeleteObject(hBitmap);

    //產生新的位圖  

    hBitmap=CreateDIBitmap(hDc, (LPBITMAPINFOHEADER)lpTempImgData, 

 (LONG)CBM_INIT,    (LPSTR)lpTempImgData+sizeof(BITMAPINFOHEADER) +

256*sizeof(RGBQUAD),    (LPBITMAPINFO)lpTempImgData, DIB_RGB_COLORS);

    if(hPalette && hPrevPalette){

        SelectPalette(hDc,hPrevPalette,FALSE);

        RealizePalette(hDc);

    }

    hf=_lcreat("c:\\256.bmp",0);

    _lwrite(hf,(LPSTR)&DstBf,sizeof(BITMAPFILEHEADER)); 

    _lwrite(hf,(LPSTR)lpTempImgData,DstBufSize);

    _lclose(hf);

    //釋放內存和資源

    ReleaseDC(hWnd,hDc);

    LocalUnlock(hTempImgData);

    LocalFree(hTempImgData);

    GlobalUnlock(hImgData);

    return TRUE;

}

 

    以下我們將要介紹灰度變換,針對的都是256級灰度圖。

4.對比度擴展(contrast stretching)

    假設有一幅圖,由于成象時光照不足,使得整幅圖偏暗,(例如,灰度范圍從0到63);或者成象時光照過強,使得整幅圖偏亮,(例如,灰度范圍從200到255),我們稱這些情況為低對比度,即灰度都擠在一起,沒有拉開。灰度擴展的意思就是把你所感興趣的灰度范圍拉開,使得該范圍內的像素,亮的越亮,暗的越暗,從而達到了增強對比度的目的。我們可以用如下的圖來說明對比度擴展的原理。

                       

圖5. 對比度擴展的原理

    圖中的橫坐標gold表示原圖的灰度值,縱坐標gnew表示gold經過對比度擴展后得到了新的灰度值。a,b,c為三段直線的斜率,因為是對比度擴展,所以斜率b>1。g1old和g2old表示原圖中要進行對比度擴展的范圍,g1new和g2new表示對應的新值。用公式表示為  

        a*gold                      當0<=gold<g1old時

gnew=  b*(gold-g1old)+g1new     當g1old<=gold<g2old時

        c*(gold-g2old)+g2new        當g2old<gold<=255時

顯然要得到對比度擴展后的灰度,我們需要知道a,b,c,g1old,g2old五個參數。由于有新圖的灰度級別也是255這個約束,所以滿足a*g1old+b*(g2old-g1old)+c(255-g2old)=255這個方程。這樣,我們只需給出四個參數,而另一個可以可以代入方程求得。我們假設a=c,這樣,我們只要給出b,g1old和g2old,就可以求出  

a=(255-b*(g2old-g1old))/(255-(g2old-g1old)) 

要注意的是,給出的三個參數必須滿足1. b*(g2old-g1old)<=255;2. (g2old-g1old)<=255

這兩點是顯然的。

    下圖為圖1取g1old=100;g2old=150 ;b=3.0進行對比度擴展的結果。可以看出亮的區域(雕塑)變得更亮,暗的區域(手)變得更暗。

                              

圖6. 圖1對比度擴展后的結果

下面的這段程序實現了對比度擴展。首先出現對話框,輸入b,g1old,g2old的三個參數(在程序中分別是StretchRatio,SecondPoint,FirstPoint),然后對調色板做響應的處理,而實際的位圖數據不用動。

BOOL ContrastStretch(HWND hWnd)

{

    DLGPROC                dlgInputBox = NULL;

    DWORD              BufSize;

    LPBITMAPINFOHEADER lpImgData;

    LPSTR                  lpPtr;

    HLOCAL                 hTempImgData;

    LPBITMAPINFOHEADER lpTempImgData;

    LPSTR                 lpTempPtr;

    HDC                   hDc;

    HFILE                  hf;

    LOGPALETTE          *pPal;

    HPALETTE             hPrevPalette=NULL; 

    HLOCAL               hPal;

    DWORD                i;

    unsigned char         Gray;

    float                   a,g1,g2,g;

 

    if( NumColors!=256){ //必須是256級灰度圖

        MessageBox(hWnd,"Must be a 256 grayscale bitmap!","Error Message",MB_OK|

MB_ICONEXCLAMATION);

        return FALSE;

}

//出現對話框,輸入三個參數

    dlgInputBox = (DLGPROC) MakeProcInstance ( (FARPROC)InputBox, ghInst );

    DialogBox (ghInst, "INPUTBOX", hWnd, dlgInputBox);

    FreeProcInstance ( (FARPROC) dlgInputBox );

    if( StretchRatio*(SecondPoint-FirstPoint) > 255.0){ //參數不合法

MessageBox(hWnd,"StretchRatio*(SecondPoint-FirstPoint) can not be larger than 255!","Error Message",MB_OK|MB_ICONEXCLAMATION);

        return FALSE;

    }

if( (SecondPoint-FirstPoint) >=255){ //參數不合法

            MessageBox(hWnd,"The area you selected can not be the whole scale!",

"Error Message",MB_OK|MB_ICONEXCLAMATION);

        return FALSE;

}

//計算出第一和第三段的斜率a

    a=(float)((255.0-StretchRatio*(SecondPoint-FirstPoint))

/(255.0-(SecondPoint-FirstPoint))); 

    //對比度擴展范圍的邊界點所對應的新的灰度

    g1=a*FirstPoint;

    g2=StretchRatio*(SecondPoint-FirstPoint)+g1;

    //新開的緩沖區的大小

    BufSize=bf.bfSize-sizeof(BITMAPFILEHEADER);

    if((hTempImgData=LocalAlloc(LHND,BufSize))==NULL)

    {

        MessageBox(hWnd,"Error alloc memory!","Error Message",MB_OK|

MB_ICONEXCLAMATION);

            return FALSE;

    }

    lpImgData=(LPBITMAPINFOHEADER)GlobalLock(hImgData);    

    lpTempImgData=(LPBITMAPINFOHEADER)LocalLock(hTempImgData);

//拷貝頭信息和實際位圖數據

    memcpy(lpTempImgData,lpImgData,BufSize);

    hDc=GetDC(hWnd);

    //lpPtr指向原圖數據緩沖區,lpTempPtr指向新圖數據緩沖區

    lpPtr=(char *)lpImgData+sizeof(BITMAPINFOHEADER);

    lpTempPtr=(char *)lpTempImgData+sizeof(BITMAPINFOHEADER);

    //為新的邏輯調色板分配內存

    hPal=LocalAlloc(LHND,sizeof(LOGPALETTE) + NumColors* sizeof(PALETTEENTRY));

    pPal =(LOGPALETTE *)LocalLock(hPal);

    pPal->palNumEntries =(WORD) NumColors;

    pPal->palVersion    = 0x300;

    for (i = 0; i < 256; i++) {

        Gray=(unsigned char )*lpPtr;

        lpPtr+=4;

        //進行對比度擴展

        if(Gray<FirstPoint) g=(float)(a*Gray);

        else if (Gray<SecondPoint) g=g1+StretchRatio*(Gray-FirstPoint);

        else g=g2+a*(Gray-SecondPoint);

        pPal->palPalEntry[i].peRed=(BYTE)g;

        pPal->palPalEntry[i].peGreen=(BYTE)g;

        pPal->palPalEntry[i].peBlue=(BYTE)g;

        pPal->palPalEntry[i].peFlags=0;

        *(lpTempPtr++)=(unsigned char)g;

        *(lpTempPtr++)=(unsigned char)g;

        *(lpTempPtr++)=(unsigned char)g;

        *(lpTempPtr++)=0;

    }

    if(hPalette!=NULL)                     

        DeleteObject(hPalette);

    //產生新的邏輯調色板

    hPalette=CreatePalette(pPal);

    LocalUnlock(hPal);

    LocalFree(hPal);

    if(hPalette){

        hPrevPalette=SelectPalette(hDc,hPalette,FALSE);

        RealizePalette(hDc);

    }

    if(hBitmap!=NULL)

        DeleteObject(hBitmap);

    //產生新的位圖  

    hBitmap=CreateDIBitmap(hDc, (LPBITMAPINFOHEADER)lpTempImgData, 

(LONG)CBM_INIT, (LPSTR)lpTempImgData+sizeof(BITMAPINFOHEADER) +

NumColors*sizeof(RGBQUAD),(LPBITMAPINFO)lpTempImgData, DIB_RGB_COLORS);

    if(hPalette && hPrevPalette){

        SelectPalette(hDc,hPrevPalette,FALSE);

        RealizePalette(hDc);

    }

    hf=_lcreat("c:\\stretch.bmp",0);

    _lwrite(hf,(LPSTR)&bf,sizeof(BITMAPFILEHEADER)); 

    _lwrite(hf,(LPSTR)lpTempImgData,BufSize);

    _lclose(hf);

    //釋放內存和資源

    ReleaseDC(hWnd,hDc);

    LocalUnlock(hTempImgData);

    LocalFree(hTempImgData);

    GlobalUnlock(hImgData);

    return TRUE;

}

 

5.削波(cliping)

削波可以看作是對比度擴展的一個特例,我們用如下的圖說明削波的原理。

                                   

圖7. 削波的原理

不難看出,只要令對比度擴展中的a=c=0就實現了削波。我們只要給出范圍的兩個端點,斜率b就可以用方程b*(g2old-g1old)=255求出。

    下圖為圖1取g1old=150;g2old=200 進行削波的結果。把亮的區域(雕塑)提取了出來。

                          

圖8. 圖1削波處理后的結果

削波的程序和對比度擴展的程序很類似,就不再給出了。

 

6.閾值化(thresholding)

閾值化可以看作是削波的一個特例,我們用如下的圖說明閾值化的原理。

                                     

圖9. 閾值化的原理

不難看出,只要令削波中的g1old=g2old就實現了閾值化。閾值就象個門檻,比它大就是白,比它小就是黑。經過閾值化處理后的圖象變成了黑白二值圖,所以說閾值化是灰度圖轉二值圖的一種常用方法(我們以前介紹過圖案化和抖動的方法)。閾值化只需給出閾值點,即g1old即可。

下圖為圖1閾值取128,閾值化處理后的結果,得到了一幅黑白圖。

                      

圖10. 圖1閾值化處理后的結果

閾值化的程序和對比度擴展的程序很類似,就不再給出了。

 

7.灰度窗口變換(slicing) 

灰度窗口變換是將某一區間的灰度級和其它部分(背景)分開。我們用如下的圖說明灰度窗口變換的原理。其中[g1old,g2old]稱為灰度窗口。

                                          

圖11. 清除背景的灰度窗口變換的原理

                                          

圖12. 保留背景的灰度窗口變換的原理

灰度窗口變換有兩種,一種是清除背景的,一種是保留背景的。前者把不在灰度窗口范圍內的像素都賦值為0,在灰度窗口范圍內的像素都賦值為255,這也能實現灰度圖的二值化;后者是把不在灰度窗口范圍內的像素保留原灰度值,在灰度窗口范圍內的像素都賦值為255。

灰度窗口變換可以檢測出在某一灰度窗口范圍內的所有像素,是圖象灰度分析中的一個有力工具。下面有三幅圖,圖13為原圖,圖14是經過清除背景的灰度窗口變換處理后的圖(灰度窗口取[200-255]),將夜景中大廈里的燈光提取了出來。圖15是經過保留背景的灰度窗口變換處理后的圖(灰度窗口取[200-255]),將夜景中大廈里的燈光提取了出來,同時保留了大廈的背景,可以看出它們的差別還是很明顯的。

    
圖13. 原圖        圖14. 圖13經過清除背景      圖15. 圖13經過保留背景的

的灰度窗口變換處理后的圖     灰度窗口變換處理后的圖

灰度窗口變換的程序和對比度擴展的程序很類似,就不再給出了。

我突然想起了不久前在一本科學雜志上看到的一篇文章,非常有趣,是介紹電影〈阿甘正傳〉特技制作的。其中有一項就用到了類似灰度窗口變換的思想。相信看過這部電影的讀者都會對那個斷腿的丹尼上校有深刻的印象。他的斷腿是怎么拍出來的呢?其實方法很簡單,先拍一幅沒有演員出現的背景畫面,然后拍一幅有演員出現,其它不變的畫面。要注意的是,此時演員的腿用藍布包裹。把前后兩幅圖輸入計算機進行處理。第二幅圖中凡是遇到藍色的像素,就用第一幅圖中對應位置的背景像素代替。這樣,一位斷腿的上校就逼真的出現在屏幕上了。這就是電影特技中經常用到的“藍幕”技術。

說點題外話,其實現代電影,特別是好萊塢的電影,越來越離不開計算機及圖象處理技術。最近引起轟動的大片<Titanic>中的很多特技鏡頭就是利用了龐大的SGI圖形工作站機群沒日沒夜的計算產生的。圖象處理技術和我們所喜愛的電影藝術緊密的結合了起來,這更增加了我們學習它的興趣。

 

8.灰度直方圖統計(histogram)

    有時我們需要知道一幅圖中的灰度分布情況,這時就可以采用灰度直方圖來表示,圖中的橫坐標表示灰度值,縱坐標表示該灰度值出現的次數(頻率)。圖16為圖13的灰度直方圖,可見,低灰度的像素占了絕大部分。

             

圖16. 圖13的灰度直方圖

 

下面的程序顯示一幅圖的灰度直方圖。有兩段程序,第一段統計出每個灰度的像素個數,存放在數組GrayTable[]中,然后產生一個新的窗口,把統計結果顯示出來。第二段程序就是該窗口的消息處理函數。要注意的是,由于各灰度出現的頻率可能相差很大,所以如何將結果顯示在有限的窗口范圍內,是一個必須考慮的問題。我們這里的做法是,在所有出現的灰度中,統計出一個最大值max和一個最小值min,假設能顯示的窗口最大坐標為270,最小坐標為5,按成比例顯示,這樣,灰度出現的次數和顯示坐標之間呈線形關系,設 a*grayhits+b=coordinate,其中grayhits為灰度出現的次數,coordinate為顯示坐標,a和b為兩個常數。我們將max和min代入,應該滿足a*max+b=270 ;  a*min+b=5

可以解得a=265/(max-min);    b=270.0-a* max 。

    還有一點,不要忘了在WinMain函數中注冊那個新產生窗口的窗口類。

int GrayTable[256];

int MaxGrayNum;

int MinGrayNum;

BOOL Histogram(HWND hWnd)

{

    DWORD               OffBits,BufSize;

    LPBITMAPINFOHEADER lpImgData;

    LPSTR                 lpPtr;

    int                    x,y;

    int                     grayindex;

    HWND                   hPopupWnd;

    int                     temp;

    //計數器清零

    for(grayindex=0;grayindex<256;grayindex++)

        GrayTable[grayindex]=0;

    //OffBits為到實際位圖數據的偏移值

    OffBits=bf.bfOffBits-sizeof(BITMAPFILEHEADER);

//BufSize為緩沖區的大小

    BufSize=bf.bfSize-sizeof(BITMAPFILEHEADER);

    lpImgData=(LPBITMAPINFOHEADER)GlobalLock(hImgData);

    for(y=0;y<bi.biHeight;y++){

        lpPtr=(char *)lpImgData+(BufSize-LineBytes-y*LineBytes);

        for(x=0;x<bi.biWidth;x++){

            grayindex=(unsigned char)*(lpPtr++);

            GrayTable[grayindex]++; //對應的顏色計數值加1

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色视频成人在线观看免| 91国产精品成人| 亚洲精品乱码久久久久久日本蜜臀| 欧美影片第一页| 免费成人美女在线观看| 国产亚洲欧美日韩在线一区| 欧美视频在线播放| 成人高清视频免费观看| 青青草国产精品97视觉盛宴| 亚洲欧洲日韩av| 精品国产乱码久久久久久夜甘婷婷| 波多野结衣的一区二区三区| 美国一区二区三区在线播放| 亚洲欧美福利一区二区| 久久精品一区二区三区不卡牛牛| 欧美午夜宅男影院| 成人精品国产一区二区4080| 国产九色sp调教91| 美美哒免费高清在线观看视频一区二区| 综合久久国产九一剧情麻豆| 久久久99免费| ww久久中文字幕| 91精品国产一区二区三区| 欧美亚洲自拍偷拍| 91色九色蝌蚪| av在线不卡网| 成人一区在线观看| 国产成人在线影院| 国内精品视频666| 免费av网站大全久久| 奇米影视在线99精品| 亚洲国产精品久久久久秋霞影院 | 欧美视频中文字幕| 91色porny蝌蚪| 91蝌蚪porny九色| 99国产精品国产精品毛片| 国产精品1024久久| 成人在线一区二区三区| 国产成人免费视频网站高清观看视频 | 亚洲一区二区三区小说| 亚洲丝袜美腿综合| 亚洲嫩草精品久久| 亚洲女同一区二区| 亚洲人妖av一区二区| 国产精品久久久一本精品 | 成人精品免费看| 不卡视频免费播放| 成人av集中营| 91网页版在线| 在线精品视频一区二区| 欧美影院一区二区| 777欧美精品| 2021久久国产精品不只是精品| 精品国产一区二区国模嫣然| 日韩精品在线一区| 国产女人18毛片水真多成人如厕| 国产欧美精品一区二区色综合 | 99麻豆久久久国产精品免费| www.一区二区| 91久久精品国产91性色tv| 欧洲精品视频在线观看| 538prom精品视频线放| 精品91自产拍在线观看一区| 久久久久久久久伊人| 亚洲欧洲精品成人久久奇米网| 亚洲欧美日韩一区二区| 亚洲国产aⅴ天堂久久| 久久成人av少妇免费| 成人高清视频免费观看| 欧美在线制服丝袜| 日韩一区二区不卡| 国产精品视频你懂的| 亚洲一区在线视频观看| 久久国产婷婷国产香蕉| www.在线欧美| 制服视频三区第一页精品| 国产亚洲成年网址在线观看| 亚洲综合丝袜美腿| 捆绑紧缚一区二区三区视频| 成人激情视频网站| 6080yy午夜一二三区久久| 国产日韩精品一区| 午夜视频在线观看一区二区| 国产老妇另类xxxxx| 欧洲精品在线观看| 国产欧美久久久精品影院| 亚洲二区在线观看| 国产iv一区二区三区| 5566中文字幕一区二区电影| 中文字幕精品一区二区精品绿巨人 | 一本色道久久加勒比精品 | √…a在线天堂一区| 日韩在线一区二区| 成人激情小说网站| 欧美一级xxx| 亚洲欧美国产三级| 国产一区二区导航在线播放| 日本韩国欧美一区| 国产午夜亚洲精品不卡| 亚洲成人免费视| av一二三不卡影片| 欧美r级电影在线观看| 亚洲久草在线视频| 国产69精品久久久久毛片| 欧美精品自拍偷拍动漫精品| 国产精品国产三级国产aⅴ无密码| 美女视频黄 久久| 欧美日韩午夜影院| 亚洲欧美日韩一区| 国产精品一级二级三级| 欧美成人一区二区三区| 亚洲最新视频在线播放| 成人中文字幕电影| 精品噜噜噜噜久久久久久久久试看 | 国产精品久久久久一区| 蜜臀精品久久久久久蜜臀| 日本电影欧美片| 国产精品国产成人国产三级| 国产永久精品大片wwwapp | 久久女同精品一区二区| 奇米影视一区二区三区小说| 欧美性一区二区| 亚洲黄色在线视频| jvid福利写真一区二区三区| 久久这里只有精品6| 蜜桃一区二区三区在线观看| 欧美高清hd18日本| 亚洲图片自拍偷拍| 在线观看日韩一区| 亚洲日本中文字幕区| 高清久久久久久| 中文字幕第一页久久| 风间由美一区二区三区在线观看| 精品日韩欧美在线| 免费日本视频一区| 777久久久精品| 美女网站色91| 精品人在线二区三区| 毛片基地黄久久久久久天堂| 欧美军同video69gay| 日本午夜精品一区二区三区电影| 欧美日韩小视频| 图片区日韩欧美亚洲| 欧美日韩国产天堂| 肉丝袜脚交视频一区二区| 欧美精品久久久久久久久老牛影院| 亚洲尤物在线视频观看| 在线观看区一区二| 性感美女极品91精品| 91精品国产色综合久久| 免费美女久久99| 亚洲精品一区二区三区蜜桃下载 | 91视频免费观看| 亚洲一区二区av在线| 欧美三级电影一区| 日本三级韩国三级欧美三级| 欧美不卡一区二区| 国产成人免费高清| 亚洲桃色在线一区| 欧美日韩亚洲综合在线| 久久 天天综合| 国产精品精品国产色婷婷| 色丁香久综合在线久综合在线观看| 亚洲国产一区二区a毛片| 欧美精品久久天天躁| 国产一区二区免费看| 国产精品麻豆欧美日韩ww| 91国偷自产一区二区使用方法| 婷婷激情综合网| 国产欧美一二三区| 欧美在线视频你懂得| 日本成人中文字幕| 国产精品视频看| 97国产精品videossex| 亚洲国产精品精华液网站| 精品国产一区二区在线观看| av不卡在线播放| 亚洲国产精品久久久久婷婷884| 精品久久久久久久久久久久久久久久久 | 欧美色精品在线视频| 麻豆视频观看网址久久| 日韩一区欧美一区| 欧美一区二区三区在线观看| 国产成人一区二区精品非洲| 亚洲一区二区三区三| 亚洲精品一区二区三区影院 | 91在线观看地址| 蜜桃av噜噜一区| 亚洲欧美国产三级| 精品人伦一区二区色婷婷| 91极品视觉盛宴| 国产成人av影院| 五月婷婷综合激情| 亚洲国产精品精华液2区45| 欧美美女黄视频| 成人美女在线视频| 日本亚洲免费观看| 亚洲国产精品精华液网站| 国产精品女主播av| 日韩一区二区三区在线视频|