@@ -87,38 +87,39 @@ export function computeThreshold(
87
87
) ;
88
88
}
89
89
const histogram = image . histogram ( { slots } ) ;
90
+ const scale = slots ? 2 ** image . bitDepth / slots : 1 ;
90
91
91
92
switch ( algorithm ) {
92
93
case 'huang' :
93
- return huang ( histogram ) ;
94
+ return huang ( histogram ) * scale ;
94
95
case 'intermodes' :
95
- return intermodes ( histogram ) ;
96
+ return intermodes ( histogram ) * scale ;
96
97
case 'isodata' :
97
- return isodata ( histogram ) ;
98
+ return isodata ( histogram ) * scale ;
98
99
case 'li' :
99
- return li ( histogram , image . size ) ;
100
+ return li ( histogram , image . size ) * scale ;
100
101
case 'maxEntropy' :
101
- return maxEntropy ( histogram , image . size ) ;
102
+ return maxEntropy ( histogram , image . size ) * scale ;
102
103
case 'mean' :
103
- return mean ( histogram , image . size ) ;
104
+ return mean ( histogram , image . size ) * scale ;
104
105
case 'minimum' :
105
- return minimum ( histogram ) ;
106
+ return minimum ( histogram ) * scale ;
106
107
case 'minError' :
107
- return minError ( histogram , image . size ) ;
108
+ return minError ( histogram , image . size ) * scale ;
108
109
case 'moments' :
109
- return moments ( histogram , image . size ) ;
110
+ return moments ( histogram , image . size ) * scale ;
110
111
case 'otsu' :
111
- return otsu ( histogram , image . size ) ;
112
+ return otsu ( histogram , image . size ) * scale ;
112
113
case 'percentile' :
113
- return percentile ( histogram ) ;
114
+ return percentile ( histogram ) * scale ;
114
115
case 'renyiEntropy' :
115
- return renyiEntropy ( histogram , image . size ) ;
116
+ return renyiEntropy ( histogram , image . size ) * scale ;
116
117
case 'shanbhag' :
117
- return shanbhag ( histogram , image . size ) ;
118
+ return shanbhag ( histogram , image . size ) * scale ;
118
119
case 'triangle' :
119
- return triangle ( histogram ) ;
120
+ return triangle ( histogram ) * scale ;
120
121
case 'yen' :
121
- return yen ( histogram , image . size ) ;
122
+ return yen ( histogram , image . size ) * scale ;
122
123
default :
123
124
throw new RangeError ( `invalid threshold algorithm: ${ algorithm } ` ) ;
124
125
}
0 commit comments