电竞比分网-中国电竞赛事及体育赛事平台

分享

vc++ bayer轉(zhuǎn)換成rgb

 dadaadao 2011-09-30

#define B(x,y)   pRGB24[0 + 3 * ((x) + MyBmpInfo->biWidth * (y))]
#define G(x,y)   pRGB24[1 + 3 * ((x) + MyBmpInfo->biWidth * (y))]
#define R(x,y)   pRGB24[2 + 3 * ((x) + MyBmpInfo->biWidth * (y))]
#define Bay(x,y) pBay[(x) + MyBmpInfo->biWidth * (y)]




void CMyDlg::bayer_bilinear(BYTE *pBay, BYTE *pRGB24, int x, int y)
{       

float tmp;

tmp=(((UINT)Bay(x + 0, y + 1) + (UINT)Bay(x + 0, y - 1)) / 2)*fratio_B;
if(tmp>255)
tmp=255;
B(x + 0, y + 0) = (BYTE)tmp;

tmp=Bay(x + 0, y + 0)*fratio_G;
if(tmp>255)tmp=255;
G(x + 0, y + 0) = (BYTE)tmp;

tmp=(((UINT)Bay(x - 1, y + 0) + (UINT)Bay(x + 1, y + 0)) / 2)*fratio_R;
if(tmp>255)
tmp=255;

R(x + 0, y + 0) = (BYTE)tmp;
///////////

tmp=Bay(x + 0, y + 1)*fratio_B;
if(tmp>255)tmp=255;
B(x + 0, y + 1) =(BYTE)tmp; 

tmp=( ((UINT)Bay(x + 0, y + 0) + (UINT)Bay(x + 0, y + 2)
+ (UINT)Bay(x - 1, y + 1) + (UINT)Bay(x + 1, y + 1)) / 4)*fratio_G;
if(tmp>255)tmp=255;
G(x + 0, y + 1) =(BYTE)tmp;

tmp=(((UINT)Bay(x + 1, y + 0) + (UINT)Bay(x - 1, y + 0)
+ (UINT)Bay(x + 1, y + 2) + (UINT)Bay(x - 1, y + 2)) / 4)*fratio_R;
if(tmp>255)
tmp=255;
R(x + 0, y + 1) =(BYTE)tmp ;

////////////////
tmp=(((UINT)Bay(x + 0, y + 1) + (UINT)Bay(x + 2, y + 1)
+ (UINT)Bay(x + 0, y - 1) + (UINT)Bay(x + 2, y - 1)) / 4)*fratio_B;
if(tmp>255)tmp=255;
B(x + 1, y + 0) = (BYTE)tmp;

tmp=(((UINT)Bay(x + 0, y + 0) + (UINT)Bay(x + 2, y + 0)
+ (UINT)Bay(x + 1, y - 1) + (UINT)Bay(x + 1, y + 1)) / 4)*fratio_G;
if(tmp>255)tmp=255;
G(x + 1, y + 0) = (BYTE)tmp;

tmp=Bay(x + 1, y + 0)*fratio_R;
if(tmp>255)
tmp=255;
R(x + 1, y + 0) =(BYTE)tmp ;


////////////////////
tmp=( ((UINT)Bay(x + 0, y + 1) + (UINT)Bay(x + 2, y + 1)) / 2)*fratio_B;
if(tmp>255)
tmp=255;
B(x + 1, y + 1) =(BYTE)tmp;

tmp=Bay(x + 1, y + 1)*fratio_G;
if(tmp>255)tmp=255;
G(x + 1, y + 1) = (BYTE)tmp;

tmp=( ((UINT)Bay(x + 1, y + 0) + (UINT)Bay(x + 1, y + 2)) / 2)*fratio_R;
if(tmp>255)
tmp=255;
R(x + 1, y + 1) =(BYTE)tmp;
}

void CMyDlg::bayer_to_rgb24(BYTE *pBits, BYTE *pRGB24)
{
int i, j;
for (i = 0; i < MyBmpInfo->biWidth-2; i += 2)
{
for (j = 1; j < MyBmpInfo->biHeight-2; j += 2)
{
bayer_bilinear(pBits, pRGB24, i, j);
}
}
}

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多