做了一个小任务,把纸质签名图片二值化黑白图片,遇到点小问题,记录一下

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.