StretchDIBits速度测试(HALFTONE)
下面实验中显示窗口大小为1024*768,拉伸模式设为HALFTONE.
一、单通道图像
(1) 保持图像高度为1024,宽度从24到2024递增,递增间隔为50,下表为统计的显示耗时与图像宽度的关系:
图像大小 |
耗时(ms) |
24*1024 |
9.796325 |
74*1024 |
10.30184 |
124*1024 |
11.06231 |
174*1024 |
11.52316 |
224*1024 |
12.18715 |
274*1024 |
12.82155 |
324*1024 |
13.90718 |
374*1024 |
14.06984 |
424*1024 |
15.17017 |
474*1024 |
16.04815 |
524*1024 |
15.77539 |
574*1024 |
16.67529 |
624*1024 |
17.4869 |
674*1024 |
18.27007 |
724*1024 |
19.01788 |
774*1024 |
19.91023 |
824*1024 |
20.69174 |
874*1024 |
21.47563 |
924*1024 |
22.23963 |
974*1024 |
23.02346 |
1024*1024 |
13.38007 |
1074*1024 |
17.87468 |
1124*1024 |
17.87868 |
1174*1024 |
18.00601 |
1224*1024 |
18.34404 |
1274*1024 |
18.46858 |
1324*1024 |
18.66459 |
1374*1024 |
18.92393 |
1424*1024 |
19.42043 |
1474*1024 |
19.15088 |
1524*1024 |
19.39751 |
1574*1024 |
19.64754 |
1624*1024 |
19.66112 |
1674*1024 |
19.89338 |
1724*1024 |
20.06777 |
1774*1024 |
21.01717 |
1824*1024 |
20.7319 |
1874*1024 |
20.71387 |
1924*1024 |
20.94786 |
1974*1024 |
21.01869 |
2024*1024 |
21.262 |
将其绘成曲线图如下:
可以看出显示耗时与图像宽度近似成分段线性关系,分界点为图像宽度与显示窗口宽度相等处(1024)。
设y=kx+b(x为图像宽度,y为显示耗时),利用matlab拟合函数polyfit可分别获得分界点两侧的拟合参数:
k1=0.0139 b1=9.1524
k2=0.0038 b2=13.7103
另外分界点处耗时有一个陡降。
(2) 保持图像宽度为1024,高度从24到2024递增,递增间隔为50,下表为统计的显示耗时与图像高度的关系:
图像大小 |
耗时(ms) |
1024* 24 |
7.922394 |
1024* 74 |
8.323548 |
1024* 124 |
8.604275 |
1024* 174 |
8.839572 |
1024* 224 |
9.096586 |
1024* 274 |
9.196709 |
1024* 324 |
9.748702 |
1024* 374 |
10.32994 |
1024* 424 |
9.921846 |
1024* 474 |
10.37223 |
1024* 524 |
10.82544 |
1024* 574 |
11.26785 |
1024* 624 |
11.65634 |
1024* 674 |
12.15726 |
1024* 724 |
12.6009 |
1024* 774 |
12.46721 |
1024* 824 |
12.63217 |
1024* 874 |
12.80108 |
1024* 924 |
12.96082 |
1024* 974 |
13.11883 |
1024*1024 |
13.37327 |
1024*1074 |
13.40269 |
1024*1124 |
13.56866 |
1024*1174 |
13.73107 |
1024*1224 |
13.88093 |
1024*1274 |
14.00228 |
1024*1324 |
14.16945 |
1024*1374 |
14.32908 |
1024*1424 |
14.59283 |
1024*1474 |
14.70967 |
1024*1524 |
14.77312 |
1024*1574 |
14.92603 |
1024*1624 |
15.088 |
1024*1674 |
15.25403 |
1024*1724 |
15.39717 |
1024*1774 |
15.57855 |
1024*1824 |
15.70022 |
1024*1874 |
15.86984 |
1024*1924 |
16.02325 |
1024*1974 |
16.19249 |
1024*2024 |
16.39066 |
将其绘成曲线图如下:
可以看出显示耗时与图像高度近似成分段线性关系,分界点为图像高度与显示窗口高度相等处(768)。
设y=kx+b(x为图像高度,y为显示耗时),利用matlab拟合函数polyfit可分别获得分界点两侧的拟合参数:
k1=0.0063 b1=7.6820
k2=0.0031 b2=10.0960
二、三通道图像
(1) 保持图像高度为1024,宽度从24到2024递增,递增间隔为50,下表为统计的显示耗时与图像宽度的关系:
图像大小 |
耗时(ms) |
24*1024 |
9.712231 |
74*1024 |
10.25534 |
124*1024 |
10.96412 |
174*1024 |
11.37105 |
224*1024 |
12.03373 |
274*1024 |
12.59427 |
324*1024 |
13.67067 |
374*1024 |
13.79808 |
424*1024 |
14.90897 |
474*1024 |
15.75245 |
524*1024 |
15.31296 |
574*1024 |
16.38553 |
624*1024 |
16.99361 |
674*1024 |
17.69326 |
724*1024 |
18.42575 |
774*1024 |
19.25657 |
824*1024 |
20.01591 |
874*1024 |
20.79176 |
924*1024 |
21.66283 |
974*1024 |
22.35087 |
1024*1024 |
12.59428 |
1074*1024 |
17.07724 |
1124*1024 |
17.02248 |
1174*1024 |
17.11959 |
1224*1024 |
17.45603 |
1274*1024 |
17.54791 |
1324*1024 |
17.68652 |
1374*1024 |
17.86168 |
1424*1024 |
18.22364 |
1474*1024 |
18.08724 |
1524*1024 |
18.31654 |
1574*1024 |
18.49236 |
1624*1024 |
18.47719 |
1674*1024 |
18.68564 |
1724*1024 |
18.82272 |
1774*1024 |
19.72777 |
1824*1024 |
19.5421 |
1874*1024 |
19.43485 |
1924*1024 |
19.55297 |
1974*1024 |
19.59999 |
2024*1024 |
19.82148 |
将其绘成曲线图如下:
可以看出显示耗时与图像宽度近似成分段线性关系,分界点为图像宽度与显示窗口宽度相等处(1024)。
设y=kx+b(x为图像宽度,y为显示耗时),利用matlab拟合函数polyfit可分别获得分界点两侧的拟合参数分别为:
k1=0.0131 b1= 9.1398
k2=0.0031 b2=13.5624
另外,在分界点处有一个陡降。
(2) 保持图像宽度为1024,高度从24到2024递增,递增间隔为50,下表为统计的显示耗时与图像高度的关系:
图像大小 |
耗时(ms) |
1024* 24 |
8.026322 |
1024* 74 |
8.360508 |
1024* 124 |
8.694708 |
1024* 174 |
8.887985 |
1024* 224 |
8.96708 |
1024* 274 |
9.122874 |
1024* 324 |
9.685652 |
1024* 374 |
10.24135 |
1024* 424 |
9.698556 |
1024* 474 |
10.12444 |
1024* 524 |
10.56098 |
1024* 574 |
10.99098 |
1024* 624 |
11.34635 |
1024* 674 |
11.81408 |
1024* 724 |
12.22322 |
1024* 774 |
12.04397 |
1024* 824 |
12.17597 |
1024* 874 |
12.31361 |
1024* 924 |
12.44259 |
1024* 974 |
12.52316 |
1024*1024 |
12.67153 |
1024*1074 |
12.79061 |
1024*1124 |
12.96766 |
1024*1174 |
13.0645 |
1024*1224 |
13.19001 |
1024*1274 |
13.34681 |
1024*1324 |
13.41933 |
1024*1374 |
13.54006 |
1024*1424 |
13.67576 |
1024*1474 |
13.76805 |
1024*1524 |
13.86556 |
1024*1574 |
13.98719 |
1024*1624 |
14.20426 |
1024*1674 |
14.33093 |
1024*1724 |
14.34395 |
1024*1774 |
14.45257 |
1024*1824 |
14.52384 |
1024*1874 |
14.65117 |
1024*1924 |
14.75053 |
1024*1974 |
14.90093 |
1024*2024 |
15.00206 |
将其绘成曲线图如下:
可以看出显示耗时与图像高度近似成分段线性关系,分界点为图像高度与显示窗口高度相等处(768)。
设y=kx+b(x为图像高度,y为显示耗时),利用matlab拟合函数polyfit可分别获得分界点两侧的拟合参数分别为:
k1=0.0056 b1=7.8175
k2=0.0024 b2=10.2718
三、四通道图像
(1) 保持图像高度为1024,宽度从24到2024递增,递增间隔为50,下表为统计的显示耗时与图像宽度的关系:
图像大小 |
耗时(ms) |
24*1024 |
9.70437 |
74*1024 |
10.29571 |
124*1024 |
11.08899 |
174*1024 |
11.57984 |
224*1024 |
12.27431 |
274*1024 |
12.95063 |
324*1024 |
14.02857 |
374*1024 |
14.23232 |
424*1024 |
15.31075 |
474*1024 |
16.18275 |
524*1024 |
15.8119 |
574*1024 |
16.73363 |
624*1024 |
17.65325 |
674*1024 |
18.48042 |
724*1024 |
19.21561 |
774*1024 |
20.10856 |
824*1024 |
21.03733 |
874*1024 |
21.66679 |
924*1024 |
22.49946 |
974*1024 |
23.2506 |
1024*1024 |
13.60484 |
1074*1024 |
18.15904 |
1124*1024 |
18.12392 |
1174*1024 |
18.29726 |
1224*1024 |
18.6863 |
1274*1024 |
18.77742 |
1324*1024 |
18.98858 |
1374*1024 |
19.23924 |
1424*1024 |
19.64915 |
1474*1024 |
19.55219 |
1524*1024 |
19.78194 |
1574*1024 |
20.00765 |
1624*1024 |
20.1667 |
1674*1024 |
20.42337 |
1724*1024 |
20.49683 |
1774*1024 |
21.43063 |
1824*1024 |
21.11269 |
1874*1024 |
21.16554 |
1924*1024 |
21.39043 |
1974*1024 |
21.48354 |
2024*1024 |
21.76705 |
将其绘成曲线图如下:
可以看出显示耗时与图像宽度近似成分段线性关系,分界点为图像宽度与显示窗口宽度相等处(1024)。
设y=kx+b(x为图像宽度,y为显示耗时),利用matlab拟合函数polyfit可分别获得分界点两侧的拟合参数分别为:
K1=0.0142 b1=9.1429
K2=0.0040 b2=13.7226
另外,分界点处有一个陡降。
(2) 保持图像宽度为1024,高度从24到2024递增,递增间隔为50,下表为统计的显示耗时与图像高度的关系:
图像大小 |
耗时(ms) |
1024* 24 |
7.991773 |
1024* 74 |
8.330941 |
1024* 124 |
8.728022 |
1024* 174 |
8.949873 |
1024* 224 |
9.212036 |
1024* 274 |
9.314224 |
1024* 324 |
9.915585 |
1024* 374 |
10.48732 |
1024* 424 |
10.06826 |
1024* 474 |
10.53688 |
1024* 524 |
11.00385 |
1024* 574 |
11.51198 |
1024* 624 |
11.86265 |
1024* 674 |
12.37443 |
1024* 724 |
12.82756 |
1024* 774 |
12.96574 |
1024* 824 |
13.07387 |
1024* 874 |
13.06449 |
1024* 924 |
13.29595 |
1024* 974 |
13.50984 |
1024*1024 |
13.61576 |
1024*1074 |
13.72418 |
1024*1124 |
13.89101 |
1024*1174 |
14.05147 |
1024*1224 |
14.19271 |
1024*1274 |
14.35607 |
1024*1324 |
14.49231 |
1024*1374 |
14.67447 |
1024*1424 |
14.8504 |
1024*1474 |
15.04389 |
1024*1524 |
15.17076 |
1024*1574 |
15.34374 |
1024*1624 |
15.50715 |
1024*1674 |
15.70393 |
1024*1724 |
15.8263 |
1024*1774 |
16.02004 |
1024*1824 |
16.15512 |
1024*1874 |
16.3089 |
1024*1924 |
16.47101 |
1024*1974 |
16.65223 |
1024*2024 |
16.85534 |
将其绘成曲线图如下:
可以看出显示耗时与图像高度近似成分段线性关系,分界点为图像高度与显示窗口高度相等处(768)。
设y=kx+b(x为图像高度,y为显示耗时),利用matlab拟合函数polyfit可分别获得分界点两侧的拟合参数分别为:
k1=0.0066 b1=7.7498
k2=0.0032 b2=10.3651
总结:
利用StretchDIBits进行位图数据显示,缩放模式HALFTONE,不管图像是几通道,特征基本一致:
(1) 显示耗时与图像宽度成分段线性关系,分界点为图像宽度与显示窗口宽度相等处,且图像宽度小于窗口宽度时的一次项系数要大于图像宽度大于窗口宽度时的一次项系数。分界点处耗时有一个陡降。
(2) 显示耗时与图像高度成分段线性关系。分界点为图像高度与显示窗口高度相等处,且图像宽度小于窗口高度时的一次项系数要大于图像宽度大于窗口高度时的一次项系数
下面是一个测试程序,源码下载