图像预处理第4步:去离散杂点噪声
//图像预处理第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步:去离散杂点噪声相关推荐
- 图像预处理第7步:标准归一化
图像预处理第7步:标准归一化 将分割出来的各个不同宽.高的数字字符宽.高统一 //图像预处理第7步:标准归一化 //将分割出来的各个不同宽.高的数字字符宽.高统一 void CChildView::O ...
- 图像预处理第8步:紧缩重排数字字符
//图像预处理第8步:紧缩重排已经分割完毕的数字字符,并形成新的位图句柄 void CChildView::OnImgprcShrinkAlign() {m_hDIB=AutoAlign(m_hDIB ...
- pytorch —— 图像预处理模块(Transforms)
transforms运行机制 torchvision是pytorch的计算机视觉工具包,在torchvision中有三个主要的模块: torchvision.transforms,常用的图像预处理方法 ...
- 图像预处理库CV-CUDA开源了,打破预处理瓶颈,提升推理吞吐量20多倍
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者:思 当 CPU 图像预处理成为视觉任务的瓶颈,最新开源的CV ...
- RGB-D立体视觉导航之图像预处理
为了获得用于相机位姿估计的特征点对做的图像预处理 1.阈值分割 目的是获得领航AGV的外壳轮廓 阈值分割是按照图像像素灰度幅度进行分割的方法,它是把图像的灰度分成不同的等级,然后用设置灰度门限(阈值) ...
- 图像预处理之减去RGB均值
减去RGB均值(实例以DIV2K数据集为例) 在计算机视觉领域中,一定免不了的就是图像预处理中的 逐个样本减去mean值的过程,那么为什么一定要做这一步呢? 为什么每张图片都要减去数据集均值呢? 原因 ...
- caffe2学习笔记一:图像预处理
Facebook的caffe2是caffe的升级版,相较于caffe的主要不同是将layer替换成了更为强大灵活的operator以及添加了类似matlab中的工作区概念的workspace,基本数据 ...
- 一阶微分算子锐化图像_【动手学计算机视觉】第三讲:图像预处理之图像分割...
本讲完整代码>> 前言 图像分割是一种把图像分成若干个独立子区域的技术和过程.在图像的研究和应用中,很多时候我们关注的仅是图像中的目标或前景(其他部分称为背景),它们对应图像中特定的.具有 ...
- opencv ocr字符识别_OCR深度实践系列:图像预处理
近一个半月时间没更了,在这段时间里针对OCR业务进行了深入研究,业务也已上线,谨以此篇作为OCR系列的开篇. 目前NLP+OCR的落地应用在市场上愈加火热,如金融领域的研报分析.司法领域的合同审核甚至 ...
最新文章
- java shape_Java 读取shape文件
- 观察者模式定义了一种一对多的对象关系,当一个对象改变时,此对象对应的监控对象跟着改变!!!...
- java语言和www技术 阶段性测试一_2018春季【贵州电大】[JAVA语言与WWW技术(省)]04任务阶段性测验(答案)...
- vue组件间函数调用
- 【Modern OpenGL】前言
- Java Double类shortValue()方法与示例
- 任何性能指标越界或造成 APP 崩溃,优酷通用性能测试一招搞定
- 计算机组成原理—地址码
- [oracle] Instant Client 即时客户端
- 【Linux】MySQL常用命令
- android 远程桌面软件,安卓上的远程桌面软件:Xtralogic Remote Desktop Client
- 戴尔台式计算机主板型号,如何查看戴尔主板型号 查看戴尔主板型号的步骤
- INTERVAL 用法
- element-ui版本更新兼容问题
- matplotlib高级篇——坐标轴设置(坐标轴居中、坐标轴箭头、刻度设置、标识设置)
- 在Typora路上愈走愈远,几乎涵盖所有入门攻略和常见问题以及typora继续探索~
- 移动端和前端开发的共性
- 解决 npm install 时出现的.git can‘t be found (see https://git.io/Jc3F9)的问题 run `npm fund` for details问题解决
- BZOJ 2277 Poi2011 Strongbox
- 我爱我妻——可以让男人看一遍哭一遍的文章!
热门文章
- select into
- python __str__
- TensorFlow tf.keras.layers.TimeDistributed
- Pandas 文本数据方法 startswith( ) endwith( )
- 手机相机里面的m_2020拍立得相机选购指南 富士乐魔徕卡推荐 总有一款适合你...
- ESXI6.7虚拟机配置LACP静态汇聚端口网络负载均衡分流
- Mysql学习总结(83)——常用的几种分布式锁:ZK分布式锁、Redis分布式锁、数据库分布式锁、基于JDK的分布式锁方案对比总结
- MyBatis学习总结(12)——Mybatis+Mysql分页查询
- python函数定义语句可执行_python学习笔记-定义函数
- 电脑硬件检测_硬盘检测工具哪个好?在win10中这样检查磁盘健康状态就对了