一个FPGA的图像饱和度运算把自己绕晕了,有没有思路借鉴下
本帖最后由 ackyee 于 2022-4-29 10:27 编辑如题,请教大牛们, 像饱和度运算这种 需要图像归一化的代码,在FPGA里 都是放大256 或者512或者1024 去参与运算最后再缩小吗?
现在乘法除法, 有时候扩大了1024 ,还得扩大1024,最后自己绕晕了 , 有没有定点小数的运算方法,或者别的什么新大陆 的方法 , 我感觉我的思路可能受限了,需要大牛们指教
下面公式是没有任何修改的饱和度 C语言算法,一开始放大对应倍数还好, 做到1/alpha 这一步后面,就一路晕了
delta = (max - min) / 255;
if (delta == 0)
continue;
value = (max + min) / 255;
L = value / 2;
if (L < 0.5)
S = delta / value;
else
S = delta / (2 - value);
if (Increment >= 0)
{
if ((Increment + S) >= 1)
alpha = S;
else
alpha = 1 - Increment;
alpha = 1 / alpha - 1;
R=( r + (r - L * 255) * alpha);
G=(g + (g - L * 255) * alpha);
B=(b + (b - L * 255) * alpha);
}
else
{
alpha = Increment;
R=(L * 255 + (r - L * 255) * (1 + alpha));
G=(L * 255 + (g - L * 255) * (1 + alpha));
B=(L * 255 + (b - L * 255) * (1 + alpha));
}
你按定点小数去处理数据就不晕了。一般是先左移乘完右移回来。 wye11083 发表于 2022-4-29 11:49
你按定点小数去处理数据就不晕了。一般是先左移乘完右移回来。
(引用自2楼)
中间结果都是0到1之间的小数,没进行最后一步之前,都无法移回来,忧伤?
页:
[1]