clear I=imread('baijpg'); %读入图像
q=imadjust(I,[2 3 0;6 7 1],[]); %增强图像的对比度
j=rgb2gray(q); %彩色图像变灰度图像
j1=im2bw(q,230/255);%二值化
se90=strel('line',3,90); %构造元素
se0=strel('line',3,0); %同上
BW2=imdilate(j1,[se90 se0]); % 用构造的元素膨胀
BW3=bwareaopen(BW2,100);%开 *** 作
BW3=~BW3;%取反
BW4=bwareaopen(BW3,20);%开
BW5=bwperim(BW4);%计算BW4周长
[imx,imy]=size(BW5);计算长宽
L=bwlabel(BW5,8);%用不同的数字根据是否连通标记图像,
a=max(max(L));%得到L图像中标记结果的最大值
BW6=bwfill(BW5,'hole');%填充背景
I2=I;
for i=1:3; I2(:,:,i)=I2(:,:,i)uint8(BW6);
end imshow(I2); 有大神能逐条解释一下语句吗,本人是菜鸟啊,跪求!!
1图像批处理的应用
在做图像处理时候,首先是研究算法,在单张的图像上做分析,把算法搞明白。
接下来,我们需要验证算法的适用性,需要将算法应用在大量的数据集上,如果我们靠着手动不断的更换“图像的路径文件名”,这样难免处理非常慢,10张20张这样做还能接受,但是成百上千张图像数据,要是再这么处理,非常不可取也基本不可行。
为了提高效率,必学技能:图像批处理,包括: 批量读取图像—>批量处理—>批量写入文件夹。
2代码
千言万语,不如直接看代码,简单明了。
clc
%选择输入的图像路径
selpath = uigetdir(path);
if ~isequal(selpath,0)
pathname_old=selpath;
%appfoldnameEditFieldValue=selpath;
else
warndlg('selpath fail','Warning');
return
end
%选择输出的图像路径
selpath = uigetdir(path);
if ~isequal(selpath,0)
pathname_new=selpath;
%appfoldnameEditFieldValue=selpath;
else
warndlg('selpath fail','Warning');
return
end
%%批量读取,处理,并输出
fileList=dir(fullfile(pathname_old,'bmp'));%以bmp图像为例
nn=length(fileList);
for ii=1:nn
filename_old=fileList(ii)name;
filename_new=strcat(filename_old(1:end-4),"_processed","bmp");
A=imread(fullfile(pathname_old,filename_old));
B=255-double(A);%以255-A,取反为例,代表处理程序,用自己的处理代码替换这里
pathfilename_new=fullfile(pathname_new,filename_new);
imwrite(uint8(B),pathfilename_new);
end
disp("ok~");
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
3演示结果
运行程序。

step1:选择输入的图像文件夹

step2:选择输出的图像文件夹

运行结果:



4总结
学好这个技能,学会套用,一通百通。
祝你学习愉快~
以上就是关于matlab图像分割程序全部的内容,包括:matlab图像分割程序、appdesigner批量读取图片、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)