做了一个小任务,把纸质签名图片二值化黑白图片,遇到点小问题,记录一下
1、首先读取图片
% 读取图片
img = imread('path\picture.jpg'); % 替换为你的图片路径
2、将图片进行二值化处理
grayImg = rgb2gray(img);
3、保存图片到指定路径
mwrite(bwImg, 'path\.png');
一般色彩差距较大的图片在第2步已经完成了,但是我的这张手写签名拍照时一侧生成了阴影,在二值化时与签名部分分不开,一并处理成立黑色,导致有很大一部分黑色色块
我用了一般的阈值处理方法,来确定最佳阈值,例如,使用Otsu方法、使用“auto”自动选择阈值
%threshold = graythresh(grayImg); % 使用Otsu方法计算阈值
%bwImg_otsu = imbinarize(grayImg, threshold); % 使用Otsu阈值进行二值化
bwImg = imbinarize(grayImg, 'auto');
这两个方法对我的图片用处并不大,和先前生成的图片没有区别(这里忘记存图放上来参考了),不知道这个自动确定阈值的原理是什么
然后手动选择阈值(指定0到1之间的一个数)
bwImg = imbinarize(grayImg, 0.4);
可以先从0.5开始,看看结果是否是自己想要的,然后再换值调试,我这里最后选定了0.4.