@@ -15,36 +15,32 @@ class EEH(BasicModule):
1515 def __init__ (self , cfg ):
1616 super ().__init__ (cfg )
1717
18- kernel = gen_gaussian_kernel (kernel_size = 7 , sigma = 5.0 )
18+ kernel = gen_gaussian_kernel (kernel_size = 5 , sigma = 1.2 )
1919 self .kernel = (1024 * kernel / kernel .max ()).astype (np .int32 ) # x1024
2020
21- flat_slope = self .params .middle_threshold / (self .params .middle_threshold - self .params .flat_threshold + 1E-6 )
22- edge_slope = self .params .edge_gain / 256
23-
24- self .flat_slope = np .array (256 * flat_slope , dtype = np .int32 ) # x256
25- self .edge_slope = np .array (256 * edge_slope , dtype = np .int32 ) # x256
26- self .flat_intercept = - np .array (256 * flat_slope * self .params .flat_threshold , dtype = np .int32 ) # x256
27- self .edge_intercept = np .array (256 * (1 - edge_slope ) * self .params .edge_threshold , dtype = np .int32 ) # x256
21+ t1 , t2 = self .params .flat_threshold , self .params .edge_threshold
22+ threshold_delta = np .clip (t2 - t1 , 1E-6 , None )
23+ self .middle_slope = np .array (self .params .edge_gain * t2 / threshold_delta , dtype = np .int32 ) # x256
24+ self .middle_intercept = - np .array (self .params .edge_gain * t1 * t2 / threshold_delta , dtype = np .int32 ) # x256
25+ self .edge_gain = np .array (self .params .edge_gain , dtype = np .int32 ) # x256
2826
2927 def execute (self , data ):
3028 y_image = data ['y_image' ].astype (np .int32 )
3129
32- gf_y_image = gaussian_filter (y_image , self .kernel )
33-
34- delta = y_image - gf_y_image
30+ delta = y_image - gaussian_filter (y_image , self .kernel )
3531 sign_map = np .sign (delta )
3632 abs_delta = np .abs (delta )
3733
38- flat_delta = np .right_shift (self .flat_slope * abs_delta + self .flat_intercept , 8 )
39- edge_delta = np .right_shift (self .edge_slope * abs_delta + self .edge_intercept , 8 )
40- enhanced_delta = sign_map * (
41- (abs_delta > self .params .flat_threshold ) * (abs_delta <= self .params .middle_threshold ) * flat_delta +
42- (abs_delta > self .params .middle_threshold ) * (abs_delta <= self .params .edge_threshold ) * abs_delta +
34+ middle_delta = np .right_shift (self .middle_slope * abs_delta + self .middle_intercept , 8 )
35+ edge_delta = np .right_shift (self .edge_gain * abs_delta , 8 )
36+ enhanced_delta = (
37+ (abs_delta > self .params .flat_threshold ) * (abs_delta <= self .params .edge_threshold ) * middle_delta +
4338 (abs_delta > self .params .edge_threshold ) * edge_delta
4439 )
45- enhanced_delta = np .clip (enhanced_delta , - self .params .delta_threshold , self .params .delta_threshold )
4640
47- eeh_y_image = np .clip (gf_y_image + enhanced_delta , 0 , self .cfg .saturation_values .sdr )
41+ enhanced_delta = sign_map * np .clip (enhanced_delta , 0 , self .params .delta_threshold )
42+
43+ eeh_y_image = np .clip (y_image + enhanced_delta , 0 , self .cfg .saturation_values .sdr )
4844
4945 data ['y_image' ] = eeh_y_image .astype (np .uint8 )
5046 data ['edge_map' ] = delta
0 commit comments