VC编程实现位图图像二值化、反相

VC编程实现位图图像二值化、反相

VC编程进行位图的像素操作(灰度化)介绍了VC对位图图像灰度化处理,本文继续介绍位图处理类CImageUtility的其它成员方法,限于篇幅,本文着重介绍VC编程实现图像二值化、位图反相的算法和具体实现。

1. 图像二值化
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// 图像极值化(二值话)处理
// limen-阈值(0.0-100.0)
void CImageUtility::ImageExtreamProcess( double limen)  
{  
     // 目前只处理24位以上的位图
     if (nPixBytes <3)
         return ;
     //定义RGB存储空间
     int nRGB[3];
     //定义LAB储存空间
     double fLAB[3];    
     for ( long nHeight=0; nHeight<bmSrcInfo.bmHeight; nHeight++)  
     {      
         for ( long nWidth=0; nWidth<bmSrcInfo.bmWidth; nWidth++)  
         {  
             //获取对应像素点得颜色
             getPixelColor(nRGB,nHeight,nWidth);
             //RGB转换成LAB
             CColorUtility::_cie_rgb2lab(nRGB,fLAB);
             if (fLAB[0]>limen){
                 nRGB[0]=255;
                 nRGB[1]=255;
                 nRGB[2]=255;
             } else {
                 nRGB[0]=0;
                 nRGB[1]=0;
                 nRGB[2]=0;
             }
             //设置像素点颜色
             setPixelColor(nRGB,nHeight,nWidth);    
         }             
     }  
     bmpSrc->SetBitmapBits(dwBmByteSize, pBmBits);  
}

图像二值化的方法是:逐个像素获取位图(BMP)图像的颜色信息,并将其转换成LAB色彩空间,将LAB的L(亮度)分量与形参传递的阈值进行比较,L(亮度)分量大于阈值则将RGB三个分亮亮均设置成255,也即是白色,如果LAB的L(亮度)分量小于形参传递的阈值则将RGB三个分亮亮均设置成0,也即是黑色。

2. 位图反相
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//反相
void CImageUtility::ImageReverseProcess(){
     // 目前只处理24位以上的位图
     if (nPixBytes <3)
         return ;
     //定义RGB存储空间
     int nRGB[3];
     for ( long nHeight=0; nHeight<bmSrcInfo.bmHeight; nHeight++)  
     {      
         for ( long nWidth=0; nWidth<bmSrcInfo.bmWidth; nWidth++)  
         {
             //获取对应像素点得颜色
             getPixelColor(nRGB,nHeight,nWidth);    
             //对每位颜色取反
             nRGB[0]=255-nRGB[0];
             nRGB[1]=255-nRGB[1];
             nRGB[2]=255-nRGB[2];            
             //设置像素点颜色
             setPixelColor(nRGB,nHeight,nWidth);    
         }             
     }  
     bmpSrc->SetBitmapBits(dwBmByteSize, pBmBits);  
}

位图反相的方法是:逐个像素获取位图(BMP)图像的RGB颜色信息,将RGB各分量设置成对应分量与255的差的绝对值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值