我正在读取一个位图文件,并将范围从0到255的每个RGB值转换为二进制。
因此,240x320位图将有230400个RGB值需要转换。原始的dec2bin函数速度过慢,所以我编写了自己的函数,因为我知道我的值始终在0到255之间。
但是遍历230400个值仍需要大约6秒钟,在我的机器上,单色位图大约需要2.3秒钟。
是否有任何方法可以加快速度,使其低于1秒甚至更好的0.5秒,因为每毫秒对我的应用程序都很重要?
以下是我的代码:
因此,240x320位图将有230400个RGB值需要转换。原始的dec2bin函数速度过慢,所以我编写了自己的函数,因为我知道我的值始终在0到255之间。
但是遍历230400个值仍需要大约6秒钟,在我的机器上,单色位图大约需要2.3秒钟。
是否有任何方法可以加快速度,使其低于1秒甚至更好的0.5秒,因为每毫秒对我的应用程序都很重要?
以下是我的代码:
function s = dec2bin_2(input)
if input == 255
s = [1;1;1;1;1;1;1;1];
return;
end
s = [0;0;0;0;0;0;0;0];
if input == 0
return;
end
if input >= 128
input = input - 128;
s(1) = 1;
if input == 0
return;
end
end
if input >= 64
input = input - 64;
s(2) = 1;
if input == 0
return;
end
end
if input >= 32
input = input - 32;
s(3) = 1;
if input == 0
return;
end
end
if input >= 16
input = input - 16;
s(4) = 1;
if input == 0
return;
end
end
if input >= 8
input = input - 8;
s(5) = 1;
if input == 0
return;
end
end
if input >= 4
input = input - 4;
s(6) = 1;
if input == 0
return;
end
end
if input >= 2
input = input - 2;
s(7) = 1;
if input == 0
return;
else
s(8) = 1;
end
end
end
我在想如果我不能用MATLAB完成它,那么也许我可以在C++中进行转换。这样做是否可行?
谢谢。