Qiang Wang
-
Upload
prathamesh-gangal -
Category
Documents
-
view
231 -
download
0
Transcript of Qiang Wang
-
8/10/2019 Qiang Wang
1/23
CIS581-Presentation
Contour finding
Presented by: Wang , Qiang
Supervised by: Dr. Longin Jan Latecki
-
8/10/2019 Qiang Wang
2/23
-
8/10/2019 Qiang Wang
3/23
Contour findingIntroduction
Output: Sequence of boundary pixels of thelargest object
Input: Binary image containing segmented objectsas black pixels
Apply to MPEG-7 Shape 1 data set. (1400 images)
-
8/10/2019 Qiang Wang
4/23
IntroductionSample images:
-
8/10/2019 Qiang Wang
5/23
Pre-processing: erase the noiseEdge detectionContour detectionDelete the redundant points
Simplify the contours
Five steps:Processing
-
8/10/2019 Qiang Wang
6/23
Pre-processingPre-processing: Erasing the noise
for num_bmp=1:1400
tmp=imread(strcat(int2str(num_bmp),'.bmp'));tmp=medfilt2(tmp,[10 10]);
x = zeros(size(tmp,1)+6,size(tmp,2)+6);x(4:size(tmp,1)+3,4:size(tmp,2)+3)=tmp;
x=x~=0;x=im2bw(x);
End% some other choices of filters:% tmp=filter2(1/25*ones(5,5),tmp);% tmp=ordfilt2(tmp,36,ones(6,6));
-
8/10/2019 Qiang Wang
7/23
Pre-processingPre-processing: Erasing the noise
Another way to erase the noise: Object Labeling
Find out all those pixels connected to each other, and label them withthe same number.
1 1 1 0 0 0 0 01 1 1 0 1 1 0 0
1 1 1 0 1 1 0 01 1 1 0 0 0 1 01 1 1 0 0 0 1 01 1 1 0 0 0 1 01 1 1 0 0 1 1 01 1 1 0 0 0 0 0
[labeled,numObjects] = bwlabel(bw,4)
1 1 1 0 0 0 0 01 1 1 0 2 2 0 0
1 1 1 0 2 2 0 01 1 1 0 0 0 01 1 1 0 0 0 3 01 1 1 0 0 0 3 01 1 1 0 0 3 3 01 1 1 0 0 0 0 0
-
8/10/2019 Qiang Wang
8/23
Pre-processingPre-processing: Erasing the noise
-
8/10/2019 Qiang Wang
9/23
Edge detectionEdge detection
Fortunately there is a very useful function in matlab:
img_edge=edge(x);
-
8/10/2019 Qiang Wang
10/23
Edge detection
-
8/10/2019 Qiang Wang
11/23
Contour detectionProblem: after edge detection, we just get animage with all those points on the contour as 1while all the others as 0,we need to get thecoordinates of those 1 pixels (vertices).
Basic idea: just travel around all the contour,find out all the pixels of 1.
-
8/10/2019 Qiang Wang
12/23
Contour detectionHow to travel??
Need a starting point;Need to decide the direction to travel;Need to avoid any circle in traveling.
(The last one is the most tricky thing)
-
8/10/2019 Qiang Wang
13/23
Contour detectionSolution:
A matrixand
a vector
-
8/10/2019 Qiang Wang
14/23
Contour detectionThe matrix : Anti-clockwise
[1 1 0 -1 -1 -1 0 1 for x0 1 1 1 0 -1 -1 -1]; for y
-
8/10/2019 Qiang Wang
15/23
-
8/10/2019 Qiang Wang
16/23
Contour detectionCode: [a b]=find(img_edge);counter=size(find(img_edge),1);point_x(1)=a(1);point_y(1)=b(1); % find out the starting point
neighbor_offset=[1 1 0 -1 -1 -1 0 1;0 1 1 1 0 -1 -1 -1];new_neighbor=[8 8 2 2 4 4 6 6];neighbor=1;
for i=1:counter %try to find out all those pixels on the contourwhile img_edge(point_x(i)+neighbor_offset(1,neighbor),point_y(i)+neighbor_offset(2,neighbor))==0
neighbor=mod(neighbor,8)+1;end
point_x(i+1)=point_x(i)+neighbor_offset(1,neighbor);point_y(i+1)=point_y(i)+neighbor_offset(2,neighbor);neighbor=new_neighbor(neighbor);
if and(point_x(1)==point_x(i+1),point_y(1)==point_y(i+1))break
endend
-
8/10/2019 Qiang Wang
17/23
Contour detection
-
8/10/2019 Qiang Wang
18/23
redundant pointsDelete the redundant pointsWhen there are many points on exact the same straight line, we just
need to keep the starting and ending points.
for i=1:size(point_x,2)-2;if or(and(point_x(i)==point_x(i+1),point_x(i+1)==point_x(i+2)),
and(point_y(i)==point_y(i+1),point_y(i+1)==point_y(i+2)))point_x(i+1)=[];point_y(i+1)=[];
endend
-
8/10/2019 Qiang Wang
19/23
-
8/10/2019 Qiang Wang
20/23
Simplify the contourfunction K=evo(Z)n=length(Z);LM=norm(Z(2)-Z(n));LR=norm(Z(1)-Z(2));
LL=norm(Z(n-1)-Z(1));His(1)=LL+LR-LM;for j=2:n-1
LM=norm(Z(j-1)-Z(j+1));LR=norm(Z(j)-Z(j+1));LL=norm(Z(j-1)-Z(j));His(j)=LL+LR-LM;
end;LM=norm(Z(n-1)-Z(1));LR=norm(Z(n)-Z(1));LL=norm(Z(n-1)-Z(n));His(n)=LL+LR-LM;K=His;
-
8/10/2019 Qiang Wang
21/23
Simplify the contour
-
8/10/2019 Qiang Wang
22/23
Conclusioninput image: 512 * 512 pixels Output file: 50 points
input size: 250 KB Output size: < 400 bytes
Based on the output: we can do Image compression
Image processingFeature extraction and analysis
...
-
8/10/2019 Qiang Wang
23/23