Jalali-Lab-Implementation-of-RAISR
Jalali-Lab-Implementation-of-RAISR copied to clipboard
Implementation different from RAISR paper?
Hi,
Thanks for your great work. I noticed some (apparent) differences between your implementation and the RAISR paper:
-
Functions.py at commit ae62ae5: function Blending1() scales HR pixel weight with the number of neighboring pixels that have smaller values, not the LCC size. Both are 3 in RAISR Fig 9, but not necessarily in all cases.
-
Test.py at commit b533df3, line 169-174: It seems you're copying the Cb and Cr channel from the ground truth HR image to result_ycbcr. According to RAISR section VI, the chromatic channels should be upscaled by bicubic interpolation from the LR image.
Am I reading your code correctly, and are these discrepancies intentional?
Thanks!
Dear Linh,
Thank you for sharing your analysis of our RAISR implementation. Your observations are correct. The following are the responses to your questions:
-
The original RAISR paper states, "Specifically, the size of the Least Connected Component (LCC) of the CT descriptor (in the case of Fig. 9(d) the LCC size is 3) is translated to a weight, determining the strength/amount of the structure within the descriptor window." But it's not clear how they translated to the weight. We choose to perform translation based on normalization from 0 to 1 with resolution 1/8.
-
Quoting from our cited paper, "Human vision is more sensitive to brightness than to colors [17]. Therefore, for color images, we only apply our algorithm to the luminance channel, while the color channels are upsampled by bicubic interpolation, as has been done by others [15-17]". We can also use bicubic interpolation on the chromatic channels, but this will not affect the PSNR results reported, as it is dependent only on luminance. We have switched to bicubic interpolation on the chromatic channels based on your comment in the newly released commit.
Thank you.
With regards, Jalali-Lab
Hi,
Thanks for your detailed response. Regarding (1), my question was that Blending1() is not using LCC size, but how many neighbors have lower values than the center pixel:
0 | 1 | 1
0 | - | 1
0 | 0 | 0
--> Here LCC = 3, HR weight = 3/8. Your code would compute HR weight = 3/8.
1 | 0 | 0
1 | - | 0
1 | 1 | 1
--> Here LCC = 3, HR weight = 3/8. Your code would compute HR weight = 5/8, because of how CT_descriptor() calculates Census.
I'm actually not sure how the paper determines connected components in a CT. So please correct me if I'm wrong.