int i=0,j=0; //color must be gray if (pbmpinfo->bmiHeader.biBitCount != 8) { AfxMessageBox("只对灰度图像进行操作!"); return FALSE; } //////////////////// //建立映射表 BYTE map_table[256] = {0}; //反变换 DEST = 255-SRC if (type==IMG_GRAY_INV) { for (i=0;i<256;i++) { map_table = (BYTE)(255 - i); } } //线性变换 f=a*src + b; if (type==IMG_GRAY_LINE) {
if (flag1 < 0) { flag1 =0; } if (flag2>255 || flag2 < -255) { return FALSE; } for (i=0;i<256;i++) { map_table = (BYTE)(flag1 * i + flag2); }
} //窗口变化 if (type==IMG_GRAY_WINDOW) { if (flag1 < 0 || flag2 > 255) { return FALSE; }
for (i=0; i<256; i++) { map_table = i;
if (i <= flag1) { map_table =0; } if (i >= flag2) { map_table = 255; } } } //灰度拉伸 if (type == IMG_GRAY_STRETCH) { int src_b = (int)flag1; int src_e = (int)flag2; int dest_b = flag3; int dest_e = flag4;
if (src_b > src_e || src_e < 0 ) { return FALSE; } if (dest_b > dest_e || dest_e < 0) { return FALSE; } for (i=0; i<256; i++) { if (i < src_b) { map_table =(BYTE) ( (dest_b * i)/src_b ); } if (i >= src_b && i <= src_e) { map_table =(BYTE) ( (dest_e - src_e) * ( i - src_b)/(dest_b - src_b) + dest_b ); } if (i > src_e) { map_table =(BYTE) ( (255-dest_e)*(i-src_e) /( 255 - src_e) + dest_e); }
}
} //对数变换 if (type == IMG_GRAY_LOG) { // } //指数变换 if (type == IMG_GRAY_EXPONENTIAL) { if (flag1 < 0) { flag1 = 1; } if (flag2 == 0) { flag2 =1; }
zhangshaobing517_935512703 2009-4-1 13:53
用户190621 2009-4-1 12:47