|
|
头发区域面积应该在一定范围内 衣服区域应该很大 所以区域面积在一定范围内看做是人头 否则就去除可以用regionprops内的area去判断 同时加上长短轴 这里贴一个简单例子
$ Y: d- Y5 ^% G6 e! {* O+ T) U' y" l: z! _
7 S" \# l& l/ l1 i* e2 @
clc; clear all; close all;1 h1 l5 ?4 z5 p. H5 p) u
I = imread('c:\\ce.jpg');5 i: z7 y3 r7 R- e2 e: J; S
I1 = rgb2gray(I);0 |1 f0 Q: y5 u# M0 X2 ~
bw1 = im2bw(I1, graythresh(I1));/ d/ b: B/ k( @7 b
bw1 = ~bw1;9 N! H2 B3 [2 J, k3 c- ]+ K
bw2 = imopen(bw1, strel('disk', 10));4 B. x2 J! I% {
bw2 = bwareaopen(bw2, 500);9 q, U! g, y. B1 ?
bw3 = bwareaopen(bw2, 1000);
- h% ~7 a5 X4 u( F1 i, p7 ~bw4 = bw2.*(~bw3);6 F2 Z; z+ E# \$ B6 V
[L, num] = bwlabel(bw4);
2 f0 `9 F" ^% mLrgb = label2rgb(L, 'jet', 'w', 'shuffle');
& A2 q: F" F( B, S+ {+ u2 b' dfigure;
. {% S2 N+ I/ ?4 ]subplot(3, 2, 1); imshow(I)1 \6 P: B9 O6 U2 @7 Q
subplot(3, 2, 2); imshow(I1)
) A3 r5 G8 P$ L; rsubplot(3, 2, 3); imshow(bw1): g, @# t/ E0 k) d3 c
subplot(3, 2, 4); imshow(bw2)
: B* ^- v Y6 q: y; Ssubplot(3, 2, 5); imshow(bw4)9 ~! |/ G. k K1 n9 R( B
subplot(3, 2, 6); imshow(I)
' F' f6 c- V+ x+ O8 M9 b5 chold on;2 e% |8 L2 a6 j$ I. k) z# w( o
himage = imshow(Lrgb);
3 b0 I P: [" g# e: N2 qset(himage, 'AlphaData', 0.5);$ w% X. X1 f: p# U
|
|