@@ -36,12 +36,8 @@ SmartCrop.DEFAULTS = {
36
36
cropWidth : 0 ,
37
37
cropHeight : 0 ,
38
38
detailWeight : 0.2 ,
39
- skinColor : [ 0.78 , 0.57 , 0.44 ] ,
40
39
skinBias : 0.01 ,
41
- skinBrightnessMin : 0.2 ,
42
- skinBrightnessMax : 1.0 ,
43
- skinThreshold : 0.8 ,
44
- skinWeight : 1.8 ,
40
+ skinWeight : 1.0 ,
45
41
saturationBrightnessMin : 0.05 ,
46
42
saturationBrightnessMax : 0.9 ,
47
43
saturationThreshold : 0.4 ,
@@ -166,10 +162,15 @@ SmartCrop.prototype = {
166
162
for ( var y = 0 ; y < h ; y ++ ) {
167
163
for ( var x = 0 ; x < w ; x ++ ) {
168
164
var p = ( y * w + x ) * 4 ,
169
- lightness = cie ( id [ p ] , id [ p + 1 ] , id [ p + 2 ] ) / 255 ,
170
- skin = this . skinColor ( id [ p ] , id [ p + 1 ] , id [ p + 2 ] ) ;
171
- if ( skin > options . skinThreshold && lightness >= options . skinBrightnessMin && lightness <= options . skinBrightnessMax ) {
172
- od [ p ] = ( skin - options . skinThreshold ) * ( 255 / ( 1 - options . skinThreshold ) ) ;
165
+ r = id [ p ] ,
166
+ g = id [ p + 1 ] ,
167
+ b = id [ p + 2 ] ,
168
+ abs_rg = Math . abs ( r - g ) ;
169
+ // Human Skin Colour Clustering for Face Detection
170
+ // Jure Kovac, Peter Peer, and Franc Solina
171
+ // http://eprints.fri.uni-lj.si/2113/1/Human_Skin_Colour_Clustering_for_Face_Detection.pdf
172
+ if ( ( r > 95 && g > 40 && b > 20 && Math . max ( r , g , b ) - Math . min ( r , g , b ) > 15 && abs_rg > 15 && r > g && r > b ) || ( r > 220 && g > 210 && b > 170 && abs_rg <= 15 && r > b && g > b ) ) {
173
+ od [ p ] = 255 ;
173
174
}
174
175
else {
175
176
od [ p ] = 0 ;
@@ -265,15 +266,6 @@ SmartCrop.prototype = {
265
266
}
266
267
return s + d ;
267
268
} ,
268
- skinColor : function ( r , g , b ) {
269
- var mag = sqrt ( r * r + g * g + b * b ) ,
270
- options = this . options ,
271
- rd = ( r / mag - options . skinColor [ 0 ] ) ,
272
- gd = ( g / mag - options . skinColor [ 1 ] ) ,
273
- bd = ( b / mag - options . skinColor [ 2 ] ) ,
274
- d = sqrt ( rd * rd + gd * gd + bd * bd ) ;
275
- return 1 - d ;
276
- } ,
277
269
analyse : function ( image ) {
278
270
var result = { } ,
279
271
options = this . options ,
0 commit comments