应用于灰度图像时,MATLAB中im2single
和single
之间的区别是什么?
我正在做一些图像处理工作,发现将电话single(image)
更改为im2single(image)
使我的表现增加了三倍,现在我对这种差异非常好奇。
答案 0 :(得分:6)
与im2double
类似,im2single
实际上会对所有图片数据进行标准化,以使所有值都在0
和1
之间。在将图像保存到文件或使用imshow
显示文件时,必须进行此缩放以获得正确的行为。
另一方面,single
只会将图像数据转换为single
数据类型而不进行缩放。
你说im2single
比单身更快。鉴于上述信息,这是不太可能的。我设计了一个基准来测试两个不同尺寸的图像。
function benchit()
N = round(linspace(1, 10000, 20));
times1 = zeros(size(N));
times2 = zeros(size(N));
for k = 1:numel(N)
im = rand(N(k));
times1(k) = timeit(@()im2single(im));
im = rand(N(k));
times2(k) = timeit(@()single(im));
end
figure
p(1) = plot(N, times1, 'DisplayName', 'im2single');
hold on
p(2) = plot(N, times2, 'DisplayName', 'single');
legend(p)
xlabel('Image Size')
ylabel('Execution Time (sec)')
end