//图像预处理第4步:去离散杂点噪声
void CChildView::OnImgprcRemoveNoise()
{RemoveScatterNoise(m_hDIB);//在屏幕上显示位图CDC* pDC=GetDC();DisplayDIB(pDC,m_hDIB);
}

/************************************************************
*
*  函数名称:
*       RemoveScatterNoise()
*
*  参数:
*     HDIB    hDIB     -原图像的句柄
*
*  返回值:
*       无
*
*  功能:
*     通过对连续点长度的统计来去除离散杂点
*
*  说明:
*      只能对2值图像进行处理
****************************************************************/
void RemoveScatterNoise(HDIB hDIB)
{// 指向DIB的指针LPSTR lpDIB=(LPSTR) ::GlobalLock((HGLOBAL)hDIB);// 指向DIB象素指针
    LPSTR    lpDIBBits;    // 找到DIB图像象素数据区的起始位置lpDIBBits = ::FindDIBBits(lpDIB);//获得图像的长度LONG lWidth=::DIBWidth ((char*)lpDIB);//获得图像的高度LONG lHeight=::DIBHeight ((char*)lpDIB);//设置判定噪声的长度阈值为15//即如果与考察点相连接的黑点的数目小于15则认为考察点是噪声点int length=15;// 循环变量m_lianXuShu=0;LONG    i;LONG    j;    LONG    k;// 图像每行的字节数
    LONG    lLineBytes;// 计算图像每行的字节数lLineBytes = WIDTHBYTES(lWidth * 8);LPSTR lpSrc;//开辟一块用来存放标志的内存数组LPBYTE lplab = new BYTE[lHeight * lWidth];//开辟一块用来保存离散判定结果的内存数组bool *lpTemp = new bool[lHeight * lWidth];//初始化标志数组for (i=0;i<lHeight*lWidth;i++){//将所有的标志位设置为非lplab[i] = false;}//用来存放离散点的坐标的数组CPoint lab[21];//为循环变量赋初始值k=0;//扫描整个图像//逐行扫描for(i =0;i<lHeight;i++){  //逐行扫描for(j=0;j<lWidth;j++){    //先把标志位置falsefor(k=0;k<m_lianXuShu;k++)lplab[lab[k].y * lWidth + lab[k].x] = false;//连续数置0m_lianXuShu =0;//进行离散性判断lpTemp[i*lWidth+j] = DeleteScaterJudge(lpDIBBits,(WORD)lLineBytes,lplab,lWidth,lHeight,j,i,lab,length);}}//扫描整个图像,把离散点填充成白色//逐行扫描for(i = 0;i<lHeight;i++){//逐列扫描for(j=0;j<lWidth;j++){       //查看标志位,如果为非则将此点设为白点if(lpTemp[i*lWidth+j] == false){    //指向第i行第j个象素的指针lpSrc=(char*)lpDIBBits + lLineBytes * i + j;//将此象素设为白点*lpSrc=BYTE(255);}}}//解除锁定
    ::GlobalUnlock ((HGLOBAL)hDIB);}

运行效果:

转载于:https://www.cnblogs.com/Bobby0322/p/5408336.html

图像预处理第4步:去离散杂点噪声相关推荐

  1. 图像预处理第7步:标准归一化

    图像预处理第7步:标准归一化 将分割出来的各个不同宽.高的数字字符宽.高统一 //图像预处理第7步:标准归一化 //将分割出来的各个不同宽.高的数字字符宽.高统一 void CChildView::O ...

  2. 图像预处理第8步:紧缩重排数字字符

    //图像预处理第8步:紧缩重排已经分割完毕的数字字符,并形成新的位图句柄 void CChildView::OnImgprcShrinkAlign() {m_hDIB=AutoAlign(m_hDIB ...

  3. pytorch —— 图像预处理模块(Transforms)

    transforms运行机制 torchvision是pytorch的计算机视觉工具包,在torchvision中有三个主要的模块: torchvision.transforms,常用的图像预处理方法 ...

  4. 图像预处理库CV-CUDA开源了,打破预处理瓶颈,提升推理吞吐量20多倍

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者:思 当 CPU 图像预处理成为视觉任务的瓶颈,最新开源的CV ...

  5. RGB-D立体视觉导航之图像预处理

    为了获得用于相机位姿估计的特征点对做的图像预处理 1.阈值分割 目的是获得领航AGV的外壳轮廓 阈值分割是按照图像像素灰度幅度进行分割的方法,它是把图像的灰度分成不同的等级,然后用设置灰度门限(阈值) ...

  6. 图像预处理之减去RGB均值

    减去RGB均值(实例以DIV2K数据集为例) 在计算机视觉领域中,一定免不了的就是图像预处理中的 逐个样本减去mean值的过程,那么为什么一定要做这一步呢? 为什么每张图片都要减去数据集均值呢? 原因 ...

  7. caffe2学习笔记一:图像预处理

    Facebook的caffe2是caffe的升级版,相较于caffe的主要不同是将layer替换成了更为强大灵活的operator以及添加了类似matlab中的工作区概念的workspace,基本数据 ...

  8. 一阶微分算子锐化图像_【动手学计算机视觉】第三讲:图像预处理之图像分割...

    本讲完整代码>> 前言 图像分割是一种把图像分成若干个独立子区域的技术和过程.在图像的研究和应用中,很多时候我们关注的仅是图像中的目标或前景(其他部分称为背景),它们对应图像中特定的.具有 ...

  9. opencv ocr字符识别_OCR深度实践系列:图像预处理

    近一个半月时间没更了,在这段时间里针对OCR业务进行了深入研究,业务也已上线,谨以此篇作为OCR系列的开篇. 目前NLP+OCR的落地应用在市场上愈加火热,如金融领域的研报分析.司法领域的合同审核甚至 ...

最新文章

  1. java shape_Java 读取shape文件
  2. 观察者模式定义了一种一对多的对象关系,当一个对象改变时,此对象对应的监控对象跟着改变!!!...
  3. java语言和www技术 阶段性测试一_2018春季【贵州电大】[JAVA语言与WWW技术(省)]04任务阶段性测验(答案)...
  4. vue组件间函数调用
  5. 【Modern OpenGL】前言
  6. Java Double类shortValue()方法与示例
  7. 任何性能指标越界或造成 APP 崩溃,优酷通用性能测试一招搞定
  8. 计算机组成原理—地址码
  9. [oracle] Instant Client 即时客户端
  10. 【Linux】MySQL常用命令
  11. android 远程桌面软件,安卓上的远程桌面软件:Xtralogic Remote Desktop Client
  12. 戴尔台式计算机主板型号,如何查看戴尔主板型号 查看戴尔主板型号的步骤
  13. INTERVAL 用法
  14. element-ui版本更新兼容问题
  15. matplotlib高级篇——坐标轴设置(坐标轴居中、坐标轴箭头、刻度设置、标识设置)
  16. 在Typora路上愈走愈远,几乎涵盖所有入门攻略和常见问题以及typora继续探索~
  17. 移动端和前端开发的共性
  18. 解决 npm install 时出现的.git can‘t be found (see https://git.io/Jc3F9)的问题 run `npm fund` for details问题解决
  19. BZOJ 2277 Poi2011 Strongbox
  20. 我爱我妻——可以让男人看一遍哭一遍的文章!

热门文章

  1. select into
  2. python __str__
  3. TensorFlow tf.keras.layers.TimeDistributed
  4. Pandas 文本数据方法 startswith( ) endwith( )
  5. 手机相机里面的m_2020拍立得相机选购指南 富士乐魔徕卡推荐 总有一款适合你...
  6. ESXI6.7虚拟机配置LACP静态汇聚端口网络负载均衡分流
  7. Mysql学习总结(83)——常用的几种分布式锁:ZK分布式锁、Redis分布式锁、数据库分布式锁、基于JDK的分布式锁方案对比总结
  8. MyBatis学习总结(12)——Mybatis+Mysql分页查询
  9. python函数定义语句可执行_python学习笔记-定义函数
  10. 电脑硬件检测_硬盘检测工具哪个好?在win10中这样检查磁盘健康状态就对了