大佬,请教一下,我们用软件实现金字塔算法,同样的图片,回灌J5金字塔得到的结果,和算法得到的结果不相同,这该怎么查问题?
大佬,请教一下,我们用软件实现金字塔算法,同样的图片,回灌J5金字塔得到的结果,和算法得到的结果不相同,这该怎么查问题?
您好:
1.这么做的原因是什么,已经有硬件PYM模块了,软件实现没啥意义啊;
2.你说的比对失败是md5值不对,还是通过hex打开,看数据不对?
计算公式代码如下:
precision = (uint32_t)1
step_tmp = (precision * roi_size) / tgt_size - precision;
tmp = (precision * roi_size) - (step_tmp + precision) * tgt_size;
if (step_tmp >= ((uint32_t)1u
vio_err("downscale ratio beyond (0.5,1], please check the size(%u->%u) again\n",
roi_size, tgt_size);
return -1;
}
*step = step_tmp;
*phase = 0;
代码如下:
precision = (uint32_t)1u
step_tmp = (precision * roi_size) / (tgt_size);
tmp = (precision * roi_size) - (step_tmp * tgt_size);
if (step_tmp < (precision / MAXINUM_US_RATIO)) {
vio_err("upscale ratio can't > 4, please check the size again\n");
hb_utils_send_sfmu_msg(EventIdPymScaleRatioErr, __LINE__, SUB_EVENT_NUMBER_1, EVENT_ERROR_LEVEL_1, VPMC);
return -1;
}
if (step_tmp > ((uint32_t)1u
vio_err("upscale ratio can't < 1, please check the size again\n");
hb_utils_send_sfmu_msg(EventIdPymScaleRatioErr, __LINE__, SUB_EVENT_NUMBER_2, EVENT_ERROR_LEVEL_1, VPMC);
return -1;
}
if (step_tmp == ((uint32_t)1u
step_tmp = PYM_STEP_PREC_SIZE;//step_tmp - 1
}
*step = step_tmp;
*phase = tmp % precision;