2009年 7月 24日 数字图象处理演示稿 纪玉波制作
(C)
1
void ShowImage1(HDC hDc,DWORD ImgWidth,DWORD ImgHeight,HDC hdcmem)
{ //图像二值化处理
DWORD i,j;
COLORREF color;
COLORREF One,Zero,threshold;
One=RGB(255,255,255);
Zero=RGB(0,0,0);
threshold=RGB(128,128,128);
for(j=0;j<ImgHeight;j++)
for(i=0;i<ImgWidth;i++)
{
color=GetPixel(hdcmem,i,j);
if(color<threshold)
SetPixelV(hDc,i,j,Zero);
else
SetPixelV(hDc,i,j,One);
}
}
2009年 7月 24日 数字图象处理演示稿 纪玉波制作
(C)
2
void ShowImage2(HDC hDc,DWORD ImgWidth,DWORD ImgHeight,HDC hdcmem)
{ //图像反置
DWORD i,j;
COLORREF color;
COLORREF One;
One=RGB(255,255,255);
for(j=0;j<ImgHeight;j++)
for(i=0;i<ImgWidth;i++)
{
color=GetPixel(hdcmem,i,j);
SetPixelV(hDc,i,j,One-color);
}
}
2009年 7月 24日 数字图象处理演示稿 纪玉波制作
(C)
3
void ShowImage3(HDC hDc,DWORD ImgWidth,DWORD ImgHeight,HDC hdcmem)
{
//图像平滑处理
DWORD i,j;
COLORREF color;
double RColor,GColor,BColor;
for(j=0;j<ImgHeight;j++)
for(i=0;i<ImgWidth;i++)
{
RColor=GetRValue(GetPixel(hdcmem,i-1,j-1))+
GetRValue(GetPixel(hdcmem,i-1,j))+
GetRValue(GetPixel(hdcmem,i-1,j+1))+
GetRValue(GetPixel(hdcmem,i,j-1))+
GetRValue(GetPixel(hdcmem,i,j))+
GetRValue(GetPixel(hdcmem,i,j+1))+
GetRValue(GetPixel(hdcmem,i+1,j-1))+
GetRValue(GetPixel(hdcmem,i+1,j))+
GetRValue(GetPixel(hdcmem,i+1,j+1));
2009年 7月 24日 数字图象处理演示稿 纪玉波制作
(C)
4
GColor=GetGValue(GetPixel(hdcmem,i-1,j-1))+
GetGValue(GetPixel(hdcmem,i-1,j))+
GetGValue(GetPixel(hdcmem,i-1,j+1))+
GetGValue(GetPixel(hdcmem,i,j-1))+
GetGValue(GetPixel(hdcmem,i,j))+
GetGValue(GetPixel(hdcmem,i,j+1))+
GetGValue(GetPixel(hdcmem,i+1,j-1))+
GetGValue(GetPixel(hdcmem,i+1,j))+
GetGValue(GetPixel(hdcmem,i+1,j+1));
BColor=GetBValue(GetPixel(hdcmem,i-1,j-1))+
GetBValue(GetPixel(hdcmem,i-1,j))+
GetBValue(GetPixel(hdcmem,i-1,j+1))+
GetBValue(GetPixel(hdcmem,i,j-1))+
GetBValue(GetPixel(hdcmem,i,j))+
GetBValue(GetPixel(hdcmem,i,j+1))+
GetBValue(GetPixel(hdcmem,i+1,j-1))+
GetBValue(GetPixel(hdcmem,i+1,j))+
GetBValue(GetPixel(hdcmem,i+1,j+1));
color=RGB(RColor/9,GColor/9,BColor/9);
SetPixelV(hDc,i,j,color);
}
}
2009年 7月 24日 数字图象处理演示稿 纪玉波制作
(C)
5
void ShowImage4(HDC hDc,DWORD ImgWidth,DWORD ImgHeight,HDC hdcmem)
{ //Robert算子进行边缘检测
DWORD i,j;
COLORREF color;
double RColor,GColor,BColor;
for(j=0;j<ImgHeight;j++)
for(i=0;i<ImgWidth;i++)
{
RColor=2*(abs(GetRValue(GetPixel(hdcmem,i,j))-
GetRValue(GetPixel(hdcmem,i+1,j+1)))+
abs(GetRValue(GetPixel(hdcmem,i+1,j))-
GetRValue(GetPixel(hdcmem,i,j+1))));
GColor=2*(abs(GetGValue(GetPixel(hdcmem,i,j))-
GetGValue(GetPixel(hdcmem,i+1,j+1)))+
abs(GetGValue(GetPixel(hdcmem,i+1,j))-
GetGValue(GetPixel(hdcmem,i,j+1))));
2009年 7月 24日 数字图象处理演示稿 纪玉波制作
(C)
6
BColor=2*(abs(GetBValue(GetPixel(hdcmem,i,j))-
GetBValue(GetPixel(hdcmem,i+1,j+1)))+
abs(GetBValue(GetPixel(hdcmem,i+1,j))-
GetBValue(GetPixel(hdcmem,i,j+1))));
if(RColor > 255)
RColor=255;
if(RColor<0)
RColor=0;
if (GColor> 255)
GColor=255;
if(GColor<0)
GColor=0;
if(BColor> 255)
BColor=255;
if(BColor<0)
BColor=0;
color=RGB(RColor,GColor,BColor);
SetPixelV(hDc,i,j,color);
}
}