数字图像处理_图像二值化_jzcjedu

皮卡丘:“师兄! ”

师兄:“干嘛…?”

皮卡丘:“你帮我看看这个,这是我打车的发票,看起来有点不太清晰,老板说不给我报销…”

师兄:“你仿佛在特意逗我笑,这不是很清楚嘛!!! ”

皮卡丘:“我老板有强迫症,他说这个扫描之后不清楚,让我弄清晰点再给他,不然就不给我钱。师兄,你一定要帮我呀,不然以后都不能打车了。”

师兄:“不急,我先看看,我记得当初张康老师教过我对于这种信噪比很高的图像你要提取出想要的信息的话用二值化处理又简单又方便。“

皮卡丘:“这样啊,快弄给我看看。“

稍等,我开一下MATLAB…

皮卡丘只见师兄在命令行输入如下代码:

 1 %copyright © [email protected]
 2 %发票二值化处理
 3 f = imread(‘czcfp.jpg‘);
 4 figure( ‘NumberTitle‘,‘off‘,‘Name‘, ‘阈值为0.9处理前‘),imshow(f),title(‘阈值为0.9处理前‘)
 5 fr = f(:,:,1);
 6 fg = f(:,:,2);
 7 fb = f(:,:,3);
 8 thresh_r = 0.9 ;
 9 thresh_g = 0.9 ;
10 thresh_b = 0.9 ;
11 %thresh_r = graythresh(fr);
12 %thresh_g = graythresh(fg);
13 %thresh_b = graythresh(fb);
14 r = im2bw(fr,thresh_r);
15 g = im2bw(fg,thresh_g);
16 b = im2bw(fb,thresh_b);
17 r = 255*r;
18 g = 255*g;
19 b = 255*b;
20 x=cat(3,r,g,b);
21 figure( ‘NumberTitle‘,‘off‘,‘Name‘, ‘阈值为0.9处理后‘),imshow(x),title(‘阈值为0.9处理后‘)

瞬间奇迹出现…

皮卡丘:“666666,快教我,师兄快教我。”

师兄:“这个其实很简单的。”

皮卡丘:“快说快说!!!”

师兄:“发票的扫描和信息识别一直是一个大家都很头疼的问题,尤其是出租车发票,因为出租车司机不会太注意这种东西,所以不会勤换墨。以至于打印出来的发票都不是很清晰,但是仔细辨认还是能够辨认出来的。”

皮卡丘:“就怕碰到我老板这种有强迫症的人”

师兄:“对,没错。这个时候数字图像处理的威力就展现出来了。这次你给我的是一副彩色图像,彩色图像是一个三维的矩阵,其中前两维是对应的行和列的灰度值,第三维中1 2 3分别对应R G B。所以我先提取出他们的RGB三个矩阵的分量,其次分别对他们二值化处理,其中的阈值可用matlab自动确定的阈值,也可用自己定下来的阈值。”

皮卡丘:“那他们之间有什么区别呢?“

师兄:“不急,我给你看看自动确定阈值的效果图。”

皮卡丘:“好像这样效果不太好诶…“

师兄:“是的,因为MATLAB自动确定阈值是使用“最大类间方差法“也就是我们常说的大津法简称OTSU。但是这种方法并不是对任何图像都管用的,最简单偷懒的方法就是先用OTSU确定一个阈值,再根据这个阈值适当调整一下就ok,当然这样笨的方法鲁棒性太差,如果你要做一个专门处理这个的系统,肯定要考虑很多因素进去,我这里有篇文献,你等下回宿舍可以好好看看。[1]谢志钢. 面向增值税发票的图像自动处理技术研究[D].上海交通大学,2015.”

皮卡丘:“好的,师兄再见 … ”

皮卡丘:“等等,师兄,你这里为什么要乘255( ⊙o⊙ )哇!“

师兄:“这个问题问得好,因为二值化处理之后所有的值都变成了1和0,所以我们乘一个255可以让图像对比度很高。“

皮卡丘:“这样呀,谢谢师兄。“

时间: 2024-11-10 21:47:47

数字图像处理_图像二值化_jzcjedu的相关文章

Win8 Metro(C#)数字图像处理--2.56简单统计法图像二值化

原文:Win8 Metro(C#)数字图像处理--2.56简单统计法图像二值化  [函数名称] 简单统计法图像二值化 WriteableBitmap StatisticalThSegment(WriteableBitmap src) /// <summary> /// Statistical method of image segmention. /// </summary> /// <param name="src">The source im

图像处理之积分图应用四(基于局部均值的图像二值化算法)

图像处理之积分图应用四(基于局部均值的图像二值化算法) 基本原理 均值法,选择的阈值是局部范围内像素的灰度均值(gray mean),该方法的一个变种是用常量C减去均值Mean,然后根据均值实现如下操作: pixel = (pixel > (mean - c)) ? object : background 其中默认情况下参数C取值为0.object表示前景像素,background表示背景像素. 实现步骤 1. 彩色图像转灰度图像 2. 获取灰度图像的像素数据,预计算积分图 3. 根据输入的参数

C# 指针操作图像 二值化处理

/// <summary> /// 二值化图像 /// </summary> /// <param name="bmp"></param> /// <returns></returns> private static unsafe Bitmap Binaryzation(Bitmap bmp) { BitmapData dstData = bmp.LockBits(new Rectangle(0, 0, bmp.W

基于直方图的图像二值化算法实现

引言 图像二值化的目的是最大限度的将图象中感兴趣的部分保留下来,在很多情况下,也是进行图像分析.特征提取与模式识别之前的必要的图像预处理过程.在过去年里受到国内外学者的广泛关注,产生了数以百计的阈值选取方法,但如同其他图像分割算法一样,没有一个现有方法对各种各样的图像都能得到令人满意的结果. 在分类方法中,基于直方图的全局二值算法都从不同的科学层次提出了各自的实施方案,并且这类方法都有着一些共同的特点:简单.算法容易实现和执行速度快. 算法代码 第一种方法Huang L.-K et al.参考代

一种超级快速的图像二值化技术

在计算机视觉中,对图像进行二值化恐怕是最常见的操作了.为了检测目标,可能需要对每一帧图像的每一个像素点进行运算.如果能提升二值化的速度,那么,你的算法的效率就会大大的提高.本文,将介绍一种超级快速的图像二值化技术. 要解决的问题: 如上图所示,需要把彩色图像中, (1) R通道介于(smoevalue1, somevalue2)(2) G通道介于(somevalue3, somevalue4)(3) B通道介于(somevalue5, somevalue6)当图像中某个像素点同时满足上面3个条件

数学之路-python计算实战(8)-机器视觉-图像二值化

二值化 hreshold Applies a fixed-level threshold to each array element. C++: double threshold(InputArray src, OutputArray dst, double thresh, doublemaxval, int type) Python: cv2.threshold(src, thresh, maxval, type[, dst]) → retval, dst C: double cvThresh

opencv2对读书笔记——图像二值化——thresholded函数

opencv中的图像二值化函数threshold函数 其结构 double cv::threshold( //二值化函数 const CvArr* src, //原始图像 CvArr* dst, //输出图像 double threshold, //阈值 double max_value, //最大值 int threshold_type//阈值类型 ); 实例代码 #include "cv.h" #include "highgui.h" int main() {

MATLAB:图像二值化、互补图(反运算)(im2bw,imcomplement函数)

图像二值化.反运算过程涉及到im2bw,imcomplement函数,反运算可以这么理解:原本黑的区域变为白的区域,白的区域变为黑的区域. 实现过程如下: close all; %关闭当前所有图形窗口,清空工作空间变量,清除工作空间所有变量 clear all; clc; J=imread('rice.png');% 读取灰度图像,赋值给J J1=im2bw(J);%将灰度图像转换成二值图像,赋值给J1 J2=imcomplement(J);%求灰度图像的补,即对图像进行求反运算,赋值给J2 J

图像基本变换---图像二值化(包含OSTU/迭代法/统计法/双峰法/P分位法/最大熵法)

OSTU法图像二值化 [算法说明] Ostu法又叫做最大类间方差法,是一种常用的图像分割算法.基本算法思想是根据初始阈值把图像分为两类,然后计算两类之间的方差,更新阈值,重新计算类间方差,当满足类间方差最大时的阈值,即为所求最佳阈值,具体过程如下: 1,初始化一阈值Th,将图像f(x,y)分为A,B两类: 2,分别计算A,B两类像素集合的均值ua和ub,公式如下: 其中,Na和Nb分别表示集合A,B中的像素个数. 3,计算A,B两类的类间方差,公式如下: 4,将Th从0到255循环,分别计算A,