|
|
头发区域面积应该在一定范围内 衣服区域应该很大 所以区域面积在一定范围内看做是人头 否则就去除可以用regionprops内的area去判断 同时加上长短轴 这里贴一个简单例子
1 r5 ` E4 `' {; e( Y6 Z+ q1 {
1 ]$ w$ x2 i; p9 y
b" L7 L$ d4 `clc; clear all; close all;
. n. G$ j6 ~8 G6 T) XI = imread('c:\\ce.jpg');
$ M9 }5 W7 J9 v' M: p% N% DI1 = rgb2gray(I);: u5 i, R _( ?5 N3 `5 [9 I+ ?
bw1 = im2bw(I1, graythresh(I1));
! G2 G2 t" B$ s* v7 b bbw1 = ~bw1;1 g0 I' N5 a, C" N! C
bw2 = imopen(bw1, strel('disk', 10));" t( B: B" ?: u0 i4 v3 h! {
bw2 = bwareaopen(bw2, 500);
3 A; [% F/ S6 d: [6 ubw3 = bwareaopen(bw2, 1000);, w& x; B1 M5 D% |5 c8 E
bw4 = bw2.*(~bw3);
) M- {% ^4 ?5 z) ]# [" M/ G% U[L, num] = bwlabel(bw4);
f8 ?+ S2 z. W: i) v: b8 hLrgb = label2rgb(L, 'jet', 'w', 'shuffle');
- e$ X( w7 S* D9 b3 t" Yfigure;+ ~0 R' e- K q8 h
subplot(3, 2, 1); imshow(I)
& L1 H4 |7 z/ s! qsubplot(3, 2, 2); imshow(I1)
1 q% k3 Q* k& s* e5 vsubplot(3, 2, 3); imshow(bw1)3 P( b$ k9 U1 g3 v
subplot(3, 2, 4); imshow(bw2)
+ F- M5 d4 G6 ?7 r( y8 asubplot(3, 2, 5); imshow(bw4)
0 K+ @, M, {! f% [subplot(3, 2, 6); imshow(I)" B r5 c/ t! O7 R+ @. K3 W$ O
hold on;2 E/ z& N7 p0 f# K4 P- v3 v$ W
himage = imshow(Lrgb);! M4 Z& H' \: ~! u9 Z" c4 k& q
set(himage, 'AlphaData', 0.5);/ N G1 n$ @" Y. P$ U) ~8 S
|
|