黑白图象中黑点数的计算方法
来源:互联网 发布:怎样下载photoshop软件 编辑:程序博客网 时间:2024/05/16 01:01
黑白图象中黑点数
在二值图象处理应用程序的设计中,常常需要统计图象中每一行的黑象素数。对于一幅宽为Width,高为Height的图象,数组Dots用于存放每行的黑象素数。下面的程序中,CalcRowDots计算图像Image中每行黑象素数,ByteDots计算字节k中黑象素数。
void CalcRowDots(int *Dots, unsigned char far *Image, int Width, int Height)
{
int RowBytes = Width / 8;
int RowDots;
long RowFirstByte;
int row, col, byte;
RowFirstByte = 0L;
for (row = 0; row < Height; row++)
{
RowDots = 0;
for (byte = 0; byte < RowBytes; byte++)
RowDots += ByteDots(*(Image + RowFirstByte + byte));
Dots[row] = RowDots;
RowFirstByte += RowBytes;
}
}
int ByteDots(int k)
{
int DotsNum = 0;
while (k != 0)
{
if ((k & 1) != 0) DotsNum++;
k >>= 1;
}
return DotNum;
}
上面的程序效率不高,通过引入一个查看表ByteDots[256]可以大大提高速度。ByteDots用于表示字符0到255中的黑象素数。ByteDots一开始就计算出来,当统计图象中每一行的黑象素数的程序需要ByteDots时,不需计算而可以直接引用。ByteDots计算程序为:
int ByteDots[256];
void GenByteDots()
{
int j, k;
int DotNum;
for (k = 0; k < 256; k++)
{
DotsNum = 0;
j = k;
while (j != 0)
{
if ((j & 1) != 0) DotsNum++;
j >>= 1;
}
ByteDots[j] = DotNum;
}
}
计算Dots的程序只需将函数调用语句
RowDots += ByteDots(*(Image + RowFirstByte + byte));
改为
RowDots += ByteDots[*(Image + RowFirstByte + byte)];
由于
ByteDots[0]=0
ByteDots[1]=1
ByteDots[2k]=ByteDots[k] 1<k<128
ByteDots[2k+1]=ByteDots[k]+1 1<k<128
由ByteDots的递推关系,一个更高效的计算ByteDots的程序为:
void GenByteDots()
{
int j, k;
ByteDots[0] = 0;
ByteDots[1] = 1;
j = 2;
for (k = 1; k < 128; k++)
{
ByteDots[j++] = ByteDots[k];
ByteDots[j++] = ByteDots[k] + 1;
}
}
- 黑白图象中黑点数的计算方法
- 彩色图象变黑白图象
- 求无损压缩bmp黑白图象的算法
- 阶乘数的快速计算方法
- word2010中如何去掉标题前面的小黑点
- word2010中如何去掉标题前面的小黑点
- html中去除ul li前的黑点
- 怎样在MathType中输入字母上方的黑点
- 批量/去掉office 2010 Word中标题前的黑点
- 【Word】word2010中如何去掉标题前面的小黑点
- HTML中 CSS去除li前面的小黑点
- 白板上的黑点
- 视频房间的并发数计算方法
- 卡特兰数的两种计算方法
- 大数量级组合数的快速计算方法
- 组合数的几种计算方法
- Java中utf-8编码方式时所占字节数的计算方法封装
- 寒假12:黑白无常、数的统计、友好数
- java类序列化成xml 方法
- 学习勇哥开辟“专栏”
- 计算π的一组公式
- Linux服务器网卡ip配置攻略
- getOutputStream() has already been called for this response问题的解决
- 黑白图象中黑点数的计算方法
- 华南虎(图)
- JAVA 如何创建/删除/修改/复制目录及文件
- js去掉flash虚线边框
- 解决TranctionScope调试时关闭数据库连接问题
- 人不能没有鸡的世界
- GDB概述
- 阶乘数未尾零的个数
- 准备做一个网络版的坦克城