im2single与单身 - 差异?

时间:2017-04-11 13:59:40

标签: matlab image-processing matrix floating-point

应用于灰度图像时,MATLAB中im2singlesingle之间的区别是什么?

我正在做一些图像处理工作,发现将电话single(image)更改为im2single(image)使我的表现增加了三倍,现在我对这种差异非常好奇。

singleim2single的MATLAB文档在这一点上似乎没有用。

1 个答案:

答案 0 :(得分:6)

im2double类似,im2single实际上会对所有图片数据进行标准化,以使所有值都在01之间。在将图像保存到文件或使用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

enter image description here