vc++数字图像处理 自适应二值化程序
void GrayTrans::Binary()
{
long i,j;
unsigned char pixel;
long lHistogram[256];//直方图数组
//定义阈值,最大最小灰度值,平均阈值
unsigned char iThreshold,iNewThreshold,iMaxGrayValue,iMinGrayValue,
iMean1GrayValue,iMean2GrayValue;
long lP1,lP2,lS1,lS2;
int iIterationTimes;//迭代次数
if (m_nBitCount==8)
{
if (m_pImgDataOut!=NULL)
{
delete []m_pImgDataOut;
m_pImgDataOut=NULL;
}
if (m_lpColorTableOut!=NULL)
{
delete []m_lpColorTableOut;
m_lpColorTableOut=NULL;
}
m_nBitCountOut=m_nBitCount;
m_nColorTableLengthOut=ComputeColorTableLength(m_nBitCountOut);
m_lpColorTableOut=new RGBQUAD[m_nColorTableLengthOut];
memcpy(m_lpColorTableOut, m_lpColorTable,
sizeof(RGBQUAD)*m_nColorTableLengthOut);
m_imgWidthOut=m_imgWidth;
m_imgHeightOut=m_imgHeight;
int lineByte=(m_imgWidth*m_nBitCount/8+3)/4*4;//每行像素占字节数
m_pImgDataOut=new unsigned char[lineByte*m_imgHeight]; //为输出图像数据开辟空间
memset(m_pImgDataOut, (BYTE)255, m_imgWidth* m_imgHeight);
for (i = 0; i < 256;i++)
{
lHistogram[i]=0;
}
iMaxGrayValue = 0;
iMinGrayValue = 255;
//求直方图数组,求出最大,最小灰度值
for (i = 0;i < m_imgWidth ;i++)
{
for(j = 0;j pixel)
{
iMinGrayValue = pixel;
}
if(iMaxGrayValue < pixel)
{
iMaxGrayValue = pixel;
}
}
}
iNewThreshold = (iMinGrayValue + iMaxGrayValue)/2;
iThreshold = 0;
//迭代求出阈值
for(iIterationTimes = 0; iThreshold != iNewThreshold &&
iIterationTimes < 100;iIterationTimes ++)
{
iThreshold = iNewThreshold;
lP1 =0;
lP2 =0;
lS1 = 0;
lS2 = 0;
for (i = iMinGrayValue;i < iThreshold;i++)
{
lP1 += lHistogram[i]*i;
lS1 += lHistogram[i];
}
iMean1GrayValue = (unsigned char)(lP1 / lS1);
for (i = iThreshold+1;i < iMaxGrayValue;i++)
{
lP2 += lHistogram[i]*i;
lS2 += lHistogram[i];
}
iMean2GrayValue = (unsigned char)(lP2 / lS2);
iNewThreshold = (iMean1GrayValue + iMean2GrayValue)/2;
}
//二值化
for (int i=0; i
vc++数字图像处理 自适应二值化程序相关推荐
- input自适应_【正点原子FPGA连载】第十一章基于OV5640的自适应二值化实验-领航者ZYNQ之HLS 开发指南...
1)摘自[正点原子]领航者ZYNQ之HLS 开发指南 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手 ...
- 利用python opencv实现图像自适应二值化
对灰度图像利用阈值得到一个二值化的图像,是常最常用的图像处理技术之一.例如,灰度大于127的图像设置为1.小于127的设置为0,这种处理便是固定阈值127的二值化处理. 自适应的二值化处理不同于固定阈 ...
- opencv自适应二值化原理
opencv自适应二值化原理 先对图像做模糊处理(一般是均值或者高斯模糊).(这里可以加上自己的操作,做一些其他类型的模糊以及一些形态学的操作). 用原图与模糊处理之后的图像做差得到一幅图像. 判断图 ...
- VC编程实现位图图像二值化、反相
VC编程实现位图图像二值化.反相 VC编程进行位图的像素操作(灰度化)介绍了VC对位图图像灰度化处理,本文继续介绍位图处理类CImageUtility的其它成员方法,限于篇幅,本文着重介绍VC编程实现 ...
- 什么叫做形态学图像处理_数字图像处理在二值形态学及其灰度形态学方面的应用.ppt...
您所在位置:网站首页 > 海量文档  > 计算机 > 图形图像 数字图像处理在二值形态学及其灰度形态学方面的应用.pp ...
- emgucv自适应二值化
一.理论概述(转载自<OpenCV_基于局部自适应阈值的图像二值化>) 局部自适应阈值则是根据像素的邻域块的像素值分布来确定该像素位置上的二值化阈值.这样做的好处在于每个像素位置处的二值化 ...
- MATLAB图像处理之二值化以及灰度处理
首先先来明白几个概念: 1.彩色图像(RGB):图像的每个像素点都是由红(R).绿(G).蓝(B)三个分量来表示的,每一个分量一般分别介于0-255之间,当然如果每一个颜色分量用更多的位数去表示的话, ...
- OpenCV二值化cvThreshold和自适应二值化cvAdaptiveThreshold及Otsu
阈值化函数: double cvThreshold(constCvArr* src, CvArr* dst, double threshold, double max_value,int thresh ...
- 图像处理之二值化图像
图像二值化就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果.将所有灰度大于或等于阈值的像素被判定为属于特定物体,其灰度值为255表示,否则这些像素点被排除在物体区域以 ...
最新文章
- DeepID:Python基于Caffe的DeepID2实现人脸识别的简介、实现之详细攻略
- 蚂蚁金服疯了吗?大动作,非裁员,年底全员涨薪又涨假期!!!
- Vim 4 常用插件
- 【HDU - 5017】Ellipsoid(爬山算法,模拟退火,三分)
- python全局名称空间_python名称空间,命名空间
- EncryptionHelper.cs(20170223)
- jquery获取前一个月日期
- 【曼彻斯特编码/差分曼彻斯特编码】
- matplotlib.pyplot.figure
- 连接思科无线经常出现获取不到地址_思科(cisco)路由器登录IP地址默认密码说明...
- 1013-----C语言----------几个va_宏函数的使用
- CUDA C 编程/Nsight可视化
- Python机器学习算法之逻辑回归算法
- 计算机专业申请phd美国,揭秘美国大学计算机专业PHD申请难度有多大
- db2导出适用于mysql的数据_db2数据库导出导入数据库
- 一张图搞清楚矩阵 (性质解法归纳)
- python 遍历List各种方式
- NASA 美国国家航空航天局开源 253 个 NASA 软件项目
- 江苏诚迈科技笔试题2013
- 【Roofline 推理速度】影响深度学习模型推理速度的因素及相关基础知识