静态目标分割.docx
- 文档编号:10795469
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:20
- 大小:14MB
静态目标分割.docx
《静态目标分割.docx》由会员分享,可在线阅读,更多相关《静态目标分割.docx(20页珍藏版)》请在冰豆网上搜索。
静态目标分割
实验名称:
静态目标分割
班级:
姓名:
zk学号:
时间:
地点:
物联网工程学院D区机房
实验内容:
1将药板从黑色背景中分离(药板部分显示为白色,背景显示为黑色);
2根据分割结果将药板旋转至水平;
3提取药板中的药丸的位置信息;
4获取标签位置信息(可选);
实验步骤及过程:
试验中通过比较,选择将图片分为三类。
1、以xl-150-16和xl-130-16图像为基础,完成实验内容,并做步骤分析说明,并在最后做标签的提取方法阐述,由于标签效果并不是十分理想,因此仅在1中实现。
其他图像的情况分类:
2、胶囊颜色差异;3、部分胶囊损坏检测;在其后分别进行讨论阐述。
一、基础图像处理过程
以xl-150-16为例,图像如下:
(1)首先将图像转为灰度图像,并做二值化处理,并采用闭运算将胶囊边缘平滑处理。
得到图像如下所示:
(2)利用imfill填充命令将胶囊填充,得到下图:
分别从图像中点左右各距100像素点位置向下遍历像素点,直到遍历到白色边缘即胶囊板的边缘停止,分别记录像素点的坐标,示意图如下:
由此计算胶囊板的倾斜角度θ=arctan(|X2-X1|/|Y2-Y1|),利用imrotate命令将图像旋转至水平。
处理后图像如下图所示:
(3)将分别旋转水平的填充图像减去未填充图像得到下图:
利用regionprops命令分别得到图像各个区域中像素总个数,包含相应区域的最小矩形,每个区域的质心(重心)。
标记得到每个胶囊的位置信息和标记位置信息。
处理以及原图上的标记如下所示
胶囊的质心位置信息如下表所示:
胶囊
X坐标
Y坐标
1
210
308
2
211
143
3
298
140
4
298
308
5
385
139
6
386
314
7
473
140
8
473
308
9
560
148
10
560
308
标签提取过程
分析图像可得图像的标签位置有一定规律可循,其位于图像边缘空白较大的一侧(仅指左右),所以根据边界图分别确定胶囊药版的长宽以及边界坐标信息,示意图如下:
之后判断标签位于左侧且根据空白部分所占比例进行操作,得到下图:
标记其边界得到标签区域:
对结果分析可得,只能提取出标签的大体位置,效果并不是十分的理想,所以也仅在一中做方法阐述,之后不再进行标签提取。
二、胶囊颜色差异
16_52_01(900)和hl-130-19图像出现因为颜色差异导致的胶囊的不完整,若仍采取一中的图像处理方法,结果处理如下所示,不是十分完美。
根据从作业一中的做法考虑,从RGB图像中提取胶囊颜色的区域,RGB的范围取值如下表:
颜色
类型
1
2
3
4
5
绿
R
77
68
34(min)
66
83(max)
G
104
102(min)
157(max)
96
113
B
71
65
29(min)
68
77(max)
黄
R
213
231
210
240(max)
200(min)
G
183
210(max)
186
203
170(min)
B
73
70(min)
78
83
85(max)
黄绿色胶囊处理图像如下:
删去像素点个数小于10的区域并对图像膨胀操作后结果如下:
再次删去像素点个数小于500的区域,这样就大概提取出胶囊的位置,位置标记后图形如下:
同理对蓝白色取合适的阈值范围可以得到较好的处理结果,如下;
三、部分胶囊损坏
使用方法一处理效果如下,可见最右下角的损坏胶囊出现错误标记。
在错误的胶囊监测中,利用方法二中的做法,做了一些参数上的修改,实现只将完整正确的胶囊标记出来。
对二中的程序更改膨胀算子和删去小于整个胶囊面积的区域既可以得到,分析图像过程如下图:
四、实验结论
通过对5张图片的分类,由易到难的完成倾斜药板的水平旋转和胶囊位置的定位,以及错误胶囊的检测等任务。
同时试验中只是通过对标签位置的规律进行了标签的定位,虽然可以进一步的缩小标记范围,但这种方法并不是十分的灵活高效,在胶囊药板的大小以及放置方向上灵敏度较小。
如果缩小标记范围,很容易出现标签不完全处于标记范围内的情况。
但如果通过二值形态学方法又很难精确的定位,因为标签与药板背景区分度过小。
五、实验心得
在这次试验中收获颇丰,首先在图像的水平旋转上,通过对边缘像素点的分析得到图像旋转角,并利用imrotate命令完成,感觉这样的分析过程很有趣。
在定位标记的过程中学习rectangle函数的各种参数含义,同时学习了cat函数将图像中胶囊的位置信息矩阵连接,尤其是通过质心,很方便的完成对胶囊位置的确定。
附录:
程序代码:
一、基础图像处理过程
clc;
I=imread('C:
\Users\zhangkun\Desktop\1\xl-130-16.tiff');
a=rgb2gray(I);
figure
(1)
imshow(I);
figure
(2)
imshow(a);
x=size(a,1);
y=size(a,2);
g=zeros(x,y);
fori=1:
1:
x
forj=1:
1:
y
if(a(i,j)<120)
g(i,j)=0;
else
g(i,j)=255;
end
end
end
%imshow(g);
fillg=zeros(x,y);
fillg=imfill(g,'holes');
%将胶囊的边缘平滑整齐
se=strel('square',5);
closeg=imclose(g,se);
figure(3)
imshow(closeg);
title('闭运算后')
BW=edge(fillg,'roberts');
figure(5)
imshow(BW);
tiqu1=y/2-100;
tiqu2=y/2+100;
cishu1=0;
cishu2=0;
fori=1:
1:
x
if(cishu1==0)
if(g(i,tiqu1)==255)
x1=i;
cishu1=1;
end
end
end
fori=1:
1:
x
if(cishu2==0)
if(g(i,tiqu2)==255)
x2=i;
cishu2=1;
end
end
end
theta=atan(abs(x1-x2)/abs(tiqu2-tiqu1))*180/pi;
S=imrotate(BW,-theta);
A=imrotate(closeg,-theta);
B=imrotate(fillg,-theta);
I=imrotate(I,-theta);
BW=imrotate(BW,-theta);
C=B-A;
figure(6)
imshow(C);
%标签定位
fill_write=B;
figure(4)
imshow(B);
start1=0;
start2=0;
fori=1:
1:
y
if(start1==0)
if(BW(i,y/2)==1)
sta_y=i;
start1=1;
end
end
end
fori=1:
1:
x
if(start2==0)
if(BW(i,x/2)==1)
sta_x1=i;
start2=1;
i=i+20;
end
end
if(start2==1)
if(BW(i,x/2)==1)
sta_x2=i;
start2=2;
end
end
end
sta_x=sta_x2-sta_x1;
forj=(sta_y+round(sta_x/3)):
1:
y
fori=1:
1:
x
fill_write(i,j)=0;
end
end
imshow(fill_write);
img=regionprops(fill_write,'boundingbox');
locate=cat(1,img.BoundingBox);
T=graythresh(C);
bw_img=im2bw(C,T);
img_reg=regionprops(bw_img,'area','boundingbox','Centroid');
areas=[img_reg.Area];
rects=cat(1,img_reg.BoundingBox);
zhixin=cat(1,img_reg.Centroid);
figure(7);
imshow(I);
fori=1:
size(rects,1)
rectangle('position',rects(i,:
),'EdgeColor','r');
holdon
plot(zhixin(i,1),zhixin(i,2),'ob');
holdon
end
fori=1:
size(locate,1)
rectangle('position',locate(i,:
),'EdgeColor','r');
holdon
end
二、胶囊颜色差异
clc;
RGB=imread('C:
\Users\zhangkun\Desktop\1\hl-130-19.tiff');
I=RGB;
R=RGB(:
:
1);
G=RGB(:
:
2);
B=RGB(:
:
3);
rows=size(RGB,1);
columns=size(RGB,2);
fori=1:
rows
forj=1:
columns
if(34 I(i,j,: )=255; else I(i,j,: )=0; end end end a=rgb2gray(I); figure (1) imshow(I); x=size(a,1); y=size(a,2); bwgray=rgb2gray(RGB); BW=edge(bwgray,'roberts'); figure (2) imshow(BW); tiqu1=y/2-100; tiqu2=y/2+100; cishu1=0; cishu2=0; fori=1: 1: x if(cishu1==0) if(BW(i,tiqu1)==1) x1=i; cishu1=1; end end end fori=1: 1: x if(cishu2==0) if(BW(i,tiqu2)==1) x2=i; cishu2=1; end end end theta=atan(abs(x1-x2)/abs(tiqu2-tiqu1))*180/pi; RGB2=imrotate(RGB,-theta); a=imrotate(a,-theta); T=graythresh(a); bw_img=im2bw(a,T); figure(3) imshow(bw_img); bw_imgF=bwareaopen(bw_img,10); figure(4) imshow(bw_imgF); se=strel('square',10); closeg=imdilate(bw_imgF,se); figure(5) imshow(closeg); closeg=bwareaopen(closeg,500); img_reg=regionprops(closeg,'area','boundingbox','Centroid'); areas=[img_reg.Area]; rects=cat(1,img_reg.BoundingBox); zhixin=cat(1,img_reg.Centroid); figure(6); imshow(RGB2); fori=1: size(rects,1) rectangle('position',rects(i,: ),'EdgeColor','r'); holdon plot(zhixin(i,1),zhixin(i,2),'ob'); holdon end 三、部分胶囊损坏 clc; RGB=imread('C: \Users\zhangkun\Desktop\1\hl-130-01.tiff'); I=RGB; R=RGB(: : 1); G=RGB(: : 2); B=RGB(: : 3); rows=size(RGB,1); columns=size(RGB,2); fori=1: rows forj=1: columns if(34 I(i,j,: )=255; else I(i,j,: )=0; end end end a=rgb2gray(I); figure (1) imshow(I); x=size(a,1); y=size(a,2); bwgray=rgb2gray(RGB); BW=edge(bwgray,'roberts'); figure (2) imshow(BW); tiqu1=y/2-100; tiqu2=y/2+100; cishu1=0; cishu2=0; fori=1: 1: x if(cishu1==0) if(BW(i,tiqu1)==1) x1=i; cishu1=1; end end end fori=1: 1: x if(cishu2==0) if(BW(i,tiqu2)==1) x2=i; cishu2=1; end end end theta=atan(abs(x1-x2)/abs(tiqu2-tiqu1))*180/pi; RGB2=imrotate(RGB,-theta); a=imrotate(a,-theta); T=graythresh(a); bw_img=im2bw(a,T); figure(3) imshow(bw_img); bw_imgF=bwareaopen(bw_img,10); figure(4) imshow(bw_imgF); se=strel('square',30); closeg=imdilate(bw_imgF,se); figure(5) imshow(closeg); closeg=bwareaopen(closeg,8000); img_reg=regionprops(closeg,'area','boundingbox','Centroid'); areas=[img_reg.Area]; rects=cat(1,img_reg.BoundingBox); zhixin=cat(1,img_reg.Centroid); figure(6); imshow(RGB2); fori=1: size(rects,1) rectangle('position',rects(i,: ),'EdgeColor','r'); holdon plot(zhixin(i,1),zhixin(i,2),'ob'); holdon end
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 静态 目标 分割