|
头发区域面积应该在一定范围内 衣服区域应该很大 所以区域面积在一定范围内看做是人头 否则就去除可以用regionprops内的area去判断 同时加上长短轴 这里贴一个简单例子! W1 G( y* s! w! r
4 y3 ^0 X4 P& c4 v! h# i+ M6 \$ ?9 l: ~4 k5 h3 [1 R7 O0 w
clc; clear all; close all;
9 _$ u; ^; T! J8 l+ Z/ A5 r% aI = imread('c:\\ce.jpg');
& C* L! x I0 i( d2 C' qI1 = rgb2gray(I);
" A. t; _ | H4 }bw1 = im2bw(I1, graythresh(I1));' A6 m8 S3 `! c
bw1 = ~bw1;) i" g1 n( R# z% _
bw2 = imopen(bw1, strel('disk', 10));4 z7 o; `3 H! N+ O( q
bw2 = bwareaopen(bw2, 500);9 @% I- z1 ?) \ A5 Q+ P8 m( U
bw3 = bwareaopen(bw2, 1000);
1 S" [8 S- Z( O8 qbw4 = bw2.*(~bw3);
M7 A, Q* E- a$ l( ~[L, num] = bwlabel(bw4);9 ~- p% e# @* j+ ^, y) R- G# ?# d
Lrgb = label2rgb(L, 'jet', 'w', 'shuffle');
0 @" c, r* {. afigure;+ c' a# D3 B- }9 C! | I2 \1 t& o
subplot(3, 2, 1); imshow(I)2 \, c7 P1 l: N F- g2 T; o
subplot(3, 2, 2); imshow(I1)
& L% `) `& P! E5 ]8 B7 c vsubplot(3, 2, 3); imshow(bw1)
4 f: R" ^) T. b+ c" y K& [7 Xsubplot(3, 2, 4); imshow(bw2)( L4 v/ I* V9 E
subplot(3, 2, 5); imshow(bw4)
- O- v* W: V$ T. X$ k6 ?subplot(3, 2, 6); imshow(I)
1 h; T# U# @/ I5 u$ @hold on;
2 e' Y% W( P1 R6 uhimage = imshow(Lrgb);) F$ L& ]1 b% P9 u7 F9 }' e
set(himage, 'AlphaData', 0.5);
8 b, z+ ?# m; |: L! [$ p' H# P1 r+ G4 y |
|