首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

图像进行二值化的程序有一点不明白,该怎么处理

2012-09-18 
图像进行二值化的程序有一点不明白[codeC/C++][/code]//二值化for(i0im_imgHeighti++){for(j0jm_i

图像进行二值化的程序有一点不明白
[code=C/C++][/code]//二值化
for(i=0;i<m_imgHeight;i++){
for(j=0;j<m_imgWidth;j++){
if(*(m_pImgData+i*lineByte+j)<threshold)
*(m_pImgDataOut+i*lineByte+j)=0;
else
*(m_pImgDataOut+i*lineByte+j)=255;
}
}//if 和else的语句讲的是什么意思啊,我只知道这里进行二值化 但具体意思不明白,请大神给解释下吧
其中://图像每行像素所占字节数,输入图像与输出图像每行像素所占字节数相等
int lineByte=(m_imgWidth*m_nBitCount/8+3)/4*4;这个是怎么算的呢

[解决办法]
如果小于阈值就设为0,大于阈值就设为255.
m_imgWidth*m_nBitCount/8 = 宽度 *比特数/8 =每行所必须最少字节数目。
每行必须是4的倍数的字节数目,所以加 3 。
(0 + 3)/4 = 0;没有多出四个字节,满足是4的倍数。
(1 + 3)/4 = 1.多出四个字节,能存多出的一字节。同理,2,3.
 
[解决办法]
个人觉得int lineByte=m_imgWidth*m_nBitCount/8就可以了,这个二值化似乎不怎么好啊,如果是8位的图则没问题,16位或24位问题就大了,只有部分数据二值化了

热点排行