|
头发区域面积应该在一定范围内 衣服区域应该很大 所以区域面积在一定范围内看做是人头 否则就去除可以用regionprops内的area去判断 同时加上长短轴 这里贴一个简单例子
3 M6 u0 \$ s& {1 I4 {
0 x! T* T0 p; u' O
/ x, e/ ~* H3 }6 m; uclc; clear all; close all;: z1 [5 v9 B& a F
I = imread('c:\\ce.jpg');
6 f. z) c' @6 \& F1 NI1 = rgb2gray(I);! ~8 r( m6 `0 s' ~, d Z4 X! I7 [9 F
bw1 = im2bw(I1, graythresh(I1));
* m/ G* z3 |6 ~% M8 xbw1 = ~bw1;
& [/ [3 ^% p# H3 Ibw2 = imopen(bw1, strel('disk', 10));0 x% J9 b, q) c F( {; ]
bw2 = bwareaopen(bw2, 500);+ H( {" G& Q& a7 Y2 U
bw3 = bwareaopen(bw2, 1000);" o9 o% X+ ]0 _/ ^% p
bw4 = bw2.*(~bw3);
i% G, J# Z0 _( Q/ ]. U, F! s5 |) S. f[L, num] = bwlabel(bw4);5 J7 L8 U3 Y* S" D( j8 Z- o. y2 {
Lrgb = label2rgb(L, 'jet', 'w', 'shuffle');' I$ S8 l$ A& ` l4 q$ Z9 g
figure;
6 r6 s( ~- q) K+ @4 f* T* \subplot(3, 2, 1); imshow(I)
, r7 m* E' l# u1 I, e5 B7 o4 isubplot(3, 2, 2); imshow(I1)( k$ y ~1 G i; {: r
subplot(3, 2, 3); imshow(bw1); c9 c" g) p' h0 {/ f! U- l. r7 |
subplot(3, 2, 4); imshow(bw2)
& f/ N- o5 c) f8 S3 }subplot(3, 2, 5); imshow(bw4)8 B( T: y* C D& q+ @" j/ j5 y
subplot(3, 2, 6); imshow(I); m" B! F+ \, z1 X4 K
hold on;3 O: \) s2 y2 H: q* B
himage = imshow(Lrgb);3 b/ e# n7 a9 S1 Z/ t; \: v, c
set(himage, 'AlphaData', 0.5);8 P( s# t- r8 I5 t
|
|