//average the pixel value in 4x sampling data, if the pixel value in pixel is zero, copy the value of close pixel
for (i = 0; i < *SamplingLen; ++i) {
j = 0;
k = 1;
if (MappingCount[i] == 0) {
if (i == 0) {
while (!j)
{
// ADD by jt 2024.1.18 prevent vector subscript out of range error of MappingCount.
if ((i+k) >= *SamplingLen) {
break;
}
// -------------------------------------------------------------------------------
if (MappingCount[i + k] != 0)
{
SamplingBar[i] = SamplingBar[i + k] / ((double)MappingCount[i + k]);
j = 1;
}
else ++k;
}
}
else {
while (!j && ((i - k) >= 0))
{
if (MappingCount[i - k] != 0)
{
SamplingBar[i] = SamplingBar[i - k]; /* Don't divide by counts since it already happened in previous iteration */
j = 1;
}
else ++k;
}
if ((i - k) < 0)
{
k = 1;
while (!j)
{
// ADD by jt 2024.1.18 prevent vector subscript out of range error of MappingCount.
if ((i+k) >= *SamplingLen) {
break;
}
// -------------------------------------------------------------------------------
if (MappingCount[i + k] != 0)
{
SamplingBar[i] = SamplingBar[i + k] / ((double)MappingCount[i + k]);
j = 1;
}
else ++k;
}
}
}
}
else
SamplingBar[i] = (SamplingBar[i]) / ((double)MappingCount[i]);
}