我将这两个值传递给我的函数......
float c = -80f;
float m = 1.66f;
该函数接受两个用于图像对比度增强的浮点数,但是在if结构期间,程序总是进入if else块,这是不正确的。因此,数组中的每个值都被分配255,这是不正确的,任何人都可以确定为什么会这样吗?
//look up table for linear stretching
public short[] linearStretchLut(float m,float c)
{
short Lut[] = new short[256];
for(int i =0; i<Lut.length;i++){
if(i < -c/m){
Lut[i] = 0;
} else if(i > (255 - c) / m) {
Lut[i] = 255;
} else {
Lut[i] = (short) (m*i+c);
}
System.out.println(i + " " + Lut[i]);
}
return Lut;
}
一个应该使条件错误的例子......
I = 10 10> (255-c)/ m (最终值应为201.8) 所以这应该是一个错误的评估,程序不会复制这种行为。
答案 0 :(得分:1)
问题原来是这个......
我是以错误的顺序将变量m和c传递给函数,所以问题出在我自己的问题上:)
答案 1 :(得分:0)
我创建了以下测试程序,看起来你只是以错误的顺序传递值:
package test;
public class Test {
//look up table for linear stretching
public static short[] linearStretchLut(float m,float c)
{
short Lut[] = new short[256];
for(int i =0; i<Lut.length;i++){
float f1 = -c/m;
float f2 = (float) (255 - c) / m;
if(i < f1){
Lut[i] = 0;
} else if(i > f2) {
Lut[i] = 255;
} else {
Lut[i] = (short) (m*i+c);
}
System.out.println("-c/m = " + f1 + " / " + " (255 - c) / m = " + f2 + "/ i = " + i + " / Lut[i] = " + Lut[i]);
}
return Lut;
}
public static void main(String[] args)
{
float c = -80f;
float m = 1.66f;
short Lut[] = Test.linearStretchLut(m,c);
}
}