C语言实现24位彩色图像二值化_第1页
C语言实现24位彩色图像二值化_第2页
C语言实现24位彩色图像二值化_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第C语言实现24位彩色图像二值化//现将真彩图灰度化

intLineByte1=(bihead.biWidth*8/8+3)/4*4;//由于灰度化后每像素位数变为8,所以每行字节数发生改变,但仍要求为4的整数倍

FILE*fp2=fopen("鼠2.bmp","wb");

if(fp2==0)

return0;

//更改文件头,并将其保存

bfhead.bfSize=14+40+sizeof(RGBQUAD)*256+LineByte1*bihead.biHeight;//更改文件大小

bfhead.bfOffBits=14+40+sizeof(RGBQUAD)*256;//更改偏移值

fwrite(bfhead,14,1,fp2);

//更改信息头并将其保存

bihead.biBitCount=8;//更改每像素位数

bihead.biSizeImage=LineByte1*bihead.biHeight;//更改数据区大小

fwrite(bihead,40,1,fp2);

//因为灰度化图像有颜色表,所以创建颜色表并保存

pColorTable=newRGBQUAD[256];

for(inti=0;ii++)

pColorTable[i].rgbRed=pColorTable[i].rgbGreen=pColorTable[i].rgbBlue=i;//使颜色表中每种颜色的R,G,B分量相等且等于索引值

fwrite(pColorTable,sizeof(RGBQUAD),256,fp2);

//改变数据区

unsignedchar*pBmpBuf1;

pBmpBuf1=newunsignedchar[LineByte1*bihead.biHeight];

for(inti=0;ibihead.biHeight;i++)

for(intj=0;jbihead.biWidth;j++)

unsignedchar*pb1,*pb2;

pb1=pBmpBuf+i*LineByte+j*3;

inty=*(pb1)*0.299+*(pb1+1)*0.587+*(pb1+2)*0.114;

pb2=pBmpBuf1+i*LineByte1+j;

*pb2=y;

//二值化方法一:阈值设为127,灰度值小于127的置零,其他的置为255;

//for(inti=0;ibihead.biHeight;i++)

//for(intj=0;jbihead.biWidth;j++)

//{

//unsignedchar*pb;

//pb=pBmpBuf1+i*LineByte1+j;

//if(*pb127)//将每个像素值与127比较

//*pb=0;

//else

//*pb=255;

//}

//方法二:计算像素的平均值K,扫描图像的每个像素值如像素值大于K像素值设为255(白色),值小于等于K像素值设为0(黑色)

inty=0;//像素和

intk=0;//像素个数

for(inti=0;ibihead.biHeight;i++)

for(intj=0;jbihead.biWidth;j++)

unsignedchar*pb;

pb=pBmpBuf1+i*LineByte1+j;

y=y+*pb;//计算所有像素灰度值之和

k++;//统计像素个数

y=y/k;//求像素平均值

for(inti=0;ibihead.biHeight;i++)

for(intj=0;jbihead.biWidth;j++)

unsignedchar*pb1;

pb1=pBmpBuf1+i*LineByte1+j;

if(*pb1y)//将每个像素值与平均值作比较

*pb1=0;

else

*pb1=255;

fwrite(pBmpBuf1,LineByte1*bihead.biHeight,1,fp2);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论