|
|
头发区域面积应该在一定范围内 衣服区域应该很大 所以区域面积在一定范围内看做是人头 否则就去除可以用regionprops内的area去判断 同时加上长短轴 这里贴一个简单例子$ o8 `% s/ j% Q8 B3 x& W" U
" o# G/ P$ [. b. `
4 n' Y! W. x* ]5 w1 \- Q0 H% {# V Gclc; clear all; close all;
( |$ f0 u5 @+ ^! \ R8 |$ kI = imread('c:\\ce.jpg');
0 @. E) O4 r e- M2 j' iI1 = rgb2gray(I);' m3 z# A, u& A' {" p
bw1 = im2bw(I1, graythresh(I1));8 u1 I/ V" D, x' z# e( W& D
bw1 = ~bw1;9 T/ P- v1 E$ d8 Q( q4 O" F
bw2 = imopen(bw1, strel('disk', 10));) ]4 C' d S+ U' Y* ?& d) j
bw2 = bwareaopen(bw2, 500);" _3 T) z4 s# T. H
bw3 = bwareaopen(bw2, 1000);
$ ^6 H0 x# A' U$ k0 J2 kbw4 = bw2.*(~bw3);
( X I( d9 f, {: I$ ]8 f5 H[L, num] = bwlabel(bw4); R5 Q. r6 f; x& T
Lrgb = label2rgb(L, 'jet', 'w', 'shuffle');9 f" I* _6 o) X3 T* k4 y
figure;# X' x, o: D$ O: D4 V/ u: V; r
subplot(3, 2, 1); imshow(I)
, d# n. S4 p; t/ B0 ^' Osubplot(3, 2, 2); imshow(I1)
+ X, e) C) j$ Q2 Y3 \& Z9 A, \subplot(3, 2, 3); imshow(bw1)6 j8 b0 Y9 k% j* e! ^9 n5 T/ m) j' |
subplot(3, 2, 4); imshow(bw2)
: x- d" a% n8 ~" H1 t9 y: Vsubplot(3, 2, 5); imshow(bw4)
( W) A; ?1 L, N' @0 Xsubplot(3, 2, 6); imshow(I)' r8 c: [0 w5 k! Y1 Y
hold on;
- } x* o) ~3 |) Yhimage = imshow(Lrgb);
. p; O- C4 N! x/ h/ _4 uset(himage, 'AlphaData', 0.5);" A7 a$ \2 b# U1 r- q' b
|
|