|
头发区域面积应该在一定范围内 衣服区域应该很大 所以区域面积在一定范围内看做是人头 否则就去除可以用regionprops内的area去判断 同时加上长短轴 这里贴一个简单例子0 s& ~. B9 u' `, Y' s
6 V' t) ~7 K: v/ z
8 Y; O* }2 Q7 w' [0 aclc; clear all; close all;+ ?0 j2 M$ H. X& y6 H+ d& g/ A1 F
I = imread('c:\\ce.jpg');
4 ]) m1 x9 e$ K9 ?4 OI1 = rgb2gray(I);
6 s5 I4 q& G0 Y2 H% B! Obw1 = im2bw(I1, graythresh(I1));
8 u9 e" G& b _) B9 xbw1 = ~bw1;8 k3 Y) E) p2 C
bw2 = imopen(bw1, strel('disk', 10));
0 C G+ [1 W9 Y; Pbw2 = bwareaopen(bw2, 500);% l5 Y0 T# ]+ s" q: y$ P
bw3 = bwareaopen(bw2, 1000);
' L2 e- M7 |) \6 e* @' `* @bw4 = bw2.*(~bw3);1 }* A# X2 _% }
[L, num] = bwlabel(bw4);) m0 o N1 @6 f% G4 |
Lrgb = label2rgb(L, 'jet', 'w', 'shuffle');0 Z. c9 G8 H3 l; E5 K
figure;! ^& A" n; H7 U3 w% D
subplot(3, 2, 1); imshow(I) N" [) o7 A" R7 P4 T/ w* U
subplot(3, 2, 2); imshow(I1)
6 } |3 `7 C. R4 \/ ^subplot(3, 2, 3); imshow(bw1)
) i! G1 p% H8 y* ?& Rsubplot(3, 2, 4); imshow(bw2)0 m8 h' ~! M2 A1 v9 {5 x
subplot(3, 2, 5); imshow(bw4)
8 m" A; g# V9 f/ q0 Hsubplot(3, 2, 6); imshow(I)
( s* }4 \4 ]) ]hold on;. I r& R8 q7 `$ {# h
himage = imshow(Lrgb);/ V! Y8 x q( u9 ]% U4 X: I# j
set(himage, 'AlphaData', 0.5);2 M% B# X6 y1 t+ J0 M
|
|