|
头发区域面积应该在一定范围内 衣服区域应该很大 所以区域面积在一定范围内看做是人头 否则就去除可以用regionprops内的area去判断 同时加上长短轴 这里贴一个简单例子
3 z [5 w0 x# n) z$ A4 ^. {& \( ]# }! d6 Q2 s
- f4 h8 p, r5 l( \& b; ?2 h
clc; clear all; close all;
) ?, F; i g! X6 }/ t+ p- K3 GI = imread('c:\\ce.jpg');
/ M: N) V& X. v0 A2 R% l' b. b8 oI1 = rgb2gray(I);
9 J. E `6 v! k* ~6 I" ^; Vbw1 = im2bw(I1, graythresh(I1));
) F1 P! A& i3 A9 Obw1 = ~bw1;
1 f3 x+ P* ~0 m3 |$ W Tbw2 = imopen(bw1, strel('disk', 10));3 Q2 G$ n0 K/ K
bw2 = bwareaopen(bw2, 500);) V" I$ K2 m9 V' s
bw3 = bwareaopen(bw2, 1000);
2 u( g2 T5 t& |. j) z" l% l5 s( abw4 = bw2.*(~bw3);1 o Q. R5 [* L) N2 O4 n
[L, num] = bwlabel(bw4);
" y w ?. b5 v! w) k1 PLrgb = label2rgb(L, 'jet', 'w', 'shuffle');
6 n6 A# S# I& Tfigure;
3 s+ m5 n8 L! k5 n5 S( ~0 ]subplot(3, 2, 1); imshow(I)
U* n3 U$ O7 @, tsubplot(3, 2, 2); imshow(I1)
8 j; E- {0 I( f% ?: M. ssubplot(3, 2, 3); imshow(bw1)
3 z# ?/ K' t2 F- { ksubplot(3, 2, 4); imshow(bw2)
( i% J' x. G" \/ N8 T6 lsubplot(3, 2, 5); imshow(bw4); F3 [ M& C) |7 A/ o6 ?% B
subplot(3, 2, 6); imshow(I)! d7 L; L0 g) @. i7 v8 F, c
hold on;. B. L4 M0 y) O
himage = imshow(Lrgb);6 _/ M0 b! @, u0 k
set(himage, 'AlphaData', 0.5);- _, F5 M, S; Z; K. X2 U
|
|