图像进展二值化的程序有一点不明白

图像进行二值化的程序有一点不明白
	//二值化
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位问题就大了,只有部分数据二值化了