你可以试试下面的程序:\x0d\x0aI=imread('myphoto.jpg') % 假设要处理的
图像是myphoto.jpg\x0d\x0aheights=size(I,1) % 图像的高\x0d\x0awidths=size(I,2) % 图像的宽\x0d\x0am=8% 假设纵向分成8幅图\x0d\x0an=10% 假设横向分成10幅图\x0d\x0a% 考虑到rows和cols不一定能被m和n整除,所以对行数和列数均分后要取整\x0d\x0arows=round(linspace(0,heights,m+1))% 各子图像的起始和终止行标\x0d\x0acols=round(linspace(0,widths,n+1))% 各子图像的起始和终止列标\x0d\x0ablocks=cell(m,n) % 用一个单元数组容纳各个子图像\x0d\x0afor k1=1:m\x0d\x0afor k2=1:n\x0d\x0ablocks{k1,k2}=I(rows(k1)+1:rows(k1+1),cols(k2)+1:cols(k2+1),:)\x0d\x0asubimage=blocks{k1,k2}\x0d\x0a% 以下是对subimage进行
边缘检测\x0d\x0a% 加入边缘检测的代码\x0d\x0a% 以上是对subimage进行边缘检测\x0d\x0ablocks{k1,k2}=subimage\x0d\x0aend\x0d\x0aend\x0d\x0aprocessed=I% processed为处理后的图像,用原图像对其初始化\x0d\x0a% 以下为拼接图像\x0d\x0afor k1=1:m\x0d\x0afor k2=1:n\x0d\x0aprocessed(rows(k1)+1:rows(k1+1),cols(k2)+1:cols(k2+1),:)=blocks{k1,k2}\x0d\x0aend\x0d\x0aend\x0d\x0afigure,imshow(processed)\x0d\x0a% 以上的程序已测试过,对
灰度图像和真彩图像都可以运行。clear I=imread('bai.jpg') %读入图像
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:3I2(:,:,i)=I2(:,:,i).*uint8(BW6)
end imshow(I2)有大神能逐条解释一下语句吗,本人是菜鸟啊,跪求!!
评论列表(0条)