|
头发区域面积应该在一定范围内 衣服区域应该很大 所以区域面积在一定范围内看做是人头 否则就去除可以用regionprops内的area去判断 同时加上长短轴 这里贴一个简单例子
1 ]( Q* X6 L2 Y. W. R3 A4 q. }+ F9 [# T. o. ] e
9 s2 `7 X. S; C7 u
clc; clear all; close all;5 P1 l8 M/ A; k
I = imread('c:\\ce.jpg');1 h3 w1 y. k. ^7 s3 {, p0 G8 P9 l8 o
I1 = rgb2gray(I);
! }% s7 E' x# h v; [2 f/ ?bw1 = im2bw(I1, graythresh(I1));$ s7 c+ J2 @0 ^, T" U
bw1 = ~bw1;
3 M5 L; w/ ~/ ]% k- j5 rbw2 = imopen(bw1, strel('disk', 10));
, d- R# q: u! J) [( ^0 D2 Sbw2 = bwareaopen(bw2, 500);
" J' Q: T) k \0 ~! G4 v/ O1 Bbw3 = bwareaopen(bw2, 1000);
; ]0 M/ F4 J3 c8 t. N- vbw4 = bw2.*(~bw3);* l6 K: @4 ~; |; F9 `+ a+ y7 y
[L, num] = bwlabel(bw4);& N5 J( [( i! h( n% Q, a, R3 o- ?
Lrgb = label2rgb(L, 'jet', 'w', 'shuffle');
; H2 Y9 N0 y V9 Jfigure;2 U: V4 R4 s0 L, Y
subplot(3, 2, 1); imshow(I)) B) W! `+ L7 @$ M
subplot(3, 2, 2); imshow(I1)( J/ O$ Q. t; G0 y' A! k& y
subplot(3, 2, 3); imshow(bw1)
& W/ _9 t' w, W$ Gsubplot(3, 2, 4); imshow(bw2)
% T p/ _: c# w/ Xsubplot(3, 2, 5); imshow(bw4)& t, i1 K4 j) S
subplot(3, 2, 6); imshow(I)4 P# H$ f; T* Q* n% e8 {
hold on;, y" h+ V( {+ O2 T6 ]. e) F4 Z
himage = imshow(Lrgb);/ S( P8 L9 P' x D
set(himage, 'AlphaData', 0.5);: s) c1 t( B, M/ N- A4 z, Q
|
|