本文通过Matlab实现了批量化图像二值化,可以从一个文件夹中读取所有文件并进行二值化处理,再二值化处理之后,可以将处理后的图像重新命名并保存入指定文件夹。
function [] = GetFiles (SamplePath)
SamplePath = 'D:\Image Binarization\test image\original image\';
files = dir(SamplePath); % 列出指定目录下所有子文件夹和文件
size0 = size(files);
length = size0(1);
for i=3:length
fileName = strcat(SamplePath,files(i,1).name);
% 读取图像并显示
original_picture = imread(fileName);
figure(1);
imshow(original_picture);
title('原始RGB图像')
% 对图像进行二值化处理
% graythresh为自动确定二值化阈值函数,大于该阈值的就变成白色,小于该阈值的就变成黑色,所以阈值越大越黑,阈值越小越白
thresh = graythresh(original_picture);
% 如果想要自己设定阈值,那么就可以这样写Pic2=im2bw(original_picture,value);,value=[0,1]中间的任何数值
Pic2 = im2bw(original_picture,thresh);
% Pic2=im2bw(original_picture,0.5); % 自设定阈值
figure(2);
imshow(Pic2);
title('RGB图像转化为二值化图像')
currentPath=pwd; % 保存当前⼯作⽬录
cd('D:\Image Binarization\test image\result') % 把当前⼯作⽬录切换到指定⽂件夹
picname = strcat('result',num2str(i - 2));
% imwrite(Pic2,picname,"jpg")
saveas(2,picname,"jpg")
cd(currentPath) % 切回原⼯作⽬录
close;
end
end
上述代码的二值化部分通过原始图像直接二值化进行,除此之外,我们也可以通过先将原始图像进行灰度处理,再将灰度图像进行二值化处理,下面给出这部分功能的实现:
%把图像转换成灰度图像
GrayPic=rgb2gray(original_picture);%把RGB图像转化成灰度图像
figure(2)
imshow(GrayPic);
title('RGB图像转化为灰度图像')
% 灰度图像转化为二值化图像
% thresh=graythresh(GrayPic);
Pic2_=im2bw(GrayPic,thresh);
figure(4);
imshow(Pic2_);
title('灰度图像转化为二值化图像')
效果示意如下:
原始图像文件夹
结果文件夹:
文章出处登录后可见!
已经登录?立即刷新