24位真彩色转换为8位灰度图片(完整代码)

24位真彩色转换为8位灰度图片(完整代码)

ID:14514935

大小:662.50 KB

页数:23页

时间:2018-07-29

24位真彩色转换为8位灰度图片(完整代码)_第1页
24位真彩色转换为8位灰度图片(完整代码)_第2页
24位真彩色转换为8位灰度图片(完整代码)_第3页
24位真彩色转换为8位灰度图片(完整代码)_第4页
24位真彩色转换为8位灰度图片(完整代码)_第5页
资源描述:

《24位真彩色转换为8位灰度图片(完整代码)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、24位真彩色转换为8位灰度图片(完整代码)分类: C#2011-03-0409:29 4343人阅读 评论(5) 收藏 举报nullfloatgdi+byte图像处理image图像的灰度与二值化http://www.cnblogs.com/maozefa/archive/2011/12/09/2281656.html   图像的灰度化与二值化是图像处理中最常见的处理方法,也是很多图像处理方法的基础,如图像灰度统计、图像识别等。   图像的灰度化与二值化方法较多,处理过程也比较简单。但切不可因其简单而忽视效率。如常用的图像灰度计算公式:gray=red*0.299+green

2、*0.587+blue*0.114,如果在程序代码中直接套用了这个公式,因浮点数的缘故导致代码执行效率较低,如改为定点整数运算,可使执行效率大大提高。   下面是图像的灰度与二值化代码:// 定义ARGB像素结构typedefunion{   ARGBColor;    struct   {       BYTEBlue;       BYTEGreen;       BYTERed;       BYTEAlpha;   };}ARGBQuad,*PARGBQuad;//---------------------------------------------------

3、------------------------// 图像数据data灰度化VOIDGray(BitmapData*data){   PARGBQuadp=(PARGBQuad)data->Scan0;   INToffset=data->Stride-data->Width* sizeof(ARGBQuad);    for (UINTy= 0;yHeight;y++,(BYTE*)p+=offset)   {        for (UINTx= 0;xWidth;x++,p++)           p->Blue=p->Green=p->

4、Red=               (UINT)(p->Blue* 29 +p->Green* 150 +p->Red* 77 + 128)>> 8;   }}//---------------------------------------------------------------------------// 图像数据data灰度同时二值化,threshold阀值VOIDGrayAnd2Values(BitmapData*data,BYTEthreshold){   PARGBQuadp=(PARGBQuad)data->Scan0;   INToffset=da

5、ta->Stride-data->Width* sizeof(ARGBQuad);    for (UINTy= 0;yHeight;y++,(BYTE*)p+=offset)   {        for (UINTx= 0;xWidth;x++,p++)       {            if (((p->Blue* 29 +p->Green* 150 +p->Red* 77 + 128)>> 8)Color&= 0xff000000;            else       

6、        p->Color

7、= 0x00ffffff;       }   }}//---------------------------------------------------------------------------   因本文使用的是32位图像数据,所以图像的二值化没有采用通常的赋值操作p->Blue=p->Green=p->Red=0(或者255),而是采用了位运算。   下面是使用BCB2007和GDI+图像数据实现图像灰度和二值化的例子代码:// 锁定GDI+位位图扫描线到dataFORCEINLINEVOIDLockBitmap(Gdipl

8、us::Bitmap*bmp,BitmapData*data){   Gdiplus::Rectr(0, 0,bmp->GetWidth(),bmp->GetHeight());   bmp->LockBits(&r,ImageLockModeRead

9、ImageLockModeWrite,       PixelFormat32bppARGB,data);}//---------------------------------------------------------------------------//

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。