|
|
头发区域面积应该在一定范围内 衣服区域应该很大 所以区域面积在一定范围内看做是人头 否则就去除可以用regionprops内的area去判断 同时加上长短轴 这里贴一个简单例子; L* x0 v$ |5 N0 P9 L# ?7 S
, k- d; w, U+ Y7 g7 Y6 \
; a k* k7 A, n0 q
clc; clear all; close all;
+ R, ?/ i# o2 `- [I = imread('c:\\ce.jpg');3 e" P9 k7 h8 E" {- Q, i6 w
I1 = rgb2gray(I);
5 A) ?. g9 z! j1 }" Q& I3 Obw1 = im2bw(I1, graythresh(I1));& F* a! P: h. ^1 V
bw1 = ~bw1;
. l" \. B- h, o& R3 |bw2 = imopen(bw1, strel('disk', 10));
# l# S! {3 C4 e! o% T9 z5 Lbw2 = bwareaopen(bw2, 500);$ U+ y8 E- k0 s% w
bw3 = bwareaopen(bw2, 1000);; n F9 ?8 ~$ E6 b, ~9 p
bw4 = bw2.*(~bw3);
6 [) R* M- }- L6 D% h; s2 B[L, num] = bwlabel(bw4);0 o. i5 W; r/ J8 k
Lrgb = label2rgb(L, 'jet', 'w', 'shuffle');
; l( R7 F8 M, G7 B* E: S. G. gfigure;* O9 v+ W+ }$ [0 ~) V
subplot(3, 2, 1); imshow(I)' E+ s0 ]* E) c" ^9 O& M
subplot(3, 2, 2); imshow(I1)
* p4 t& T, P" b2 xsubplot(3, 2, 3); imshow(bw1)) N5 |( C1 t* }6 i& r" Z4 z
subplot(3, 2, 4); imshow(bw2)
& ^$ q z" r/ S; Y: t% E$ \* Dsubplot(3, 2, 5); imshow(bw4)/ C F( y, I. V$ ~+ L( D
subplot(3, 2, 6); imshow(I)
" `4 P) ]+ u( Uhold on;2 C6 o% E; t6 H0 F! q
himage = imshow(Lrgb);+ I( t7 m% l& u
set(himage, 'AlphaData', 0.5);& q) ~ a% P3 ^$ M3 i
|
|