在公司,图层魔术棒很快,因为只是处理设备坐标以内的,(比如800*800个坐标),而在图像魔术棒中,是处理了整景影像数据,甚至是比如(30000*300000),因此,对于批处理来说,没问题,反正后台处理,但是人机交互相当于实时处理,一等几分钟下去了,肯定不行。
因此,借鉴图层魔术棒,只处理屏幕上看得到的栅格行列.
1,如果影像占不满,(比如300*300个设备坐标),则重采样(300/30000=0.01),相当于面积是0.01*0.01=0.0001,快一万倍。所以自然速度就上去了,当然,要把重采样后的影像记录在一个重采样文件夹“”0.01_0.01“里,表明重采样倍数,存储相应的影像,比如(imagetest1_0_0_30000_30000)),标明是影像名为imagetest1的影像处理了(mincol = 0,,minRow = 0, xSize = 30000,ySize=30000)这个范围的影像数据。
2,如果屏幕只有影像的一部分,则有两种情况
(1)影像铺满了屏幕,这时候直接截取栅格行列范围即可。比如(<3000,5000>到<5000,7000>),这时候还是要看看行列号的范围xsize=2000,ySize = 2000,所以,先采样,800/2000=0.4,因此放入重采样文件夹0.4_0.4文件夹里,再存储重采样后的影像(imagetest1_3000_5000_2000_2000)。
(2)影像没有铺满影像,这时候要判断影像的边缘在设备坐标的多少,有两种情况
a,也就是最简单的,就是截取的栅格行列比设备坐标少,那时候就不用重采样了。直接截取该范围的栅格坐标处理即可。比如(<0,100,>到<100,200>》)100个行列占200个设备坐标,则把该影像放入重采样文件夹1_1里面,说明没采样,直接截取范围内的影像,命名为imagetest1_0_100_100_100
b,截取的栅格比设备坐标多。比如(占200*200个设备坐标,截取范围是<0,10000>到<10000,20000>))),则重采样200/10000=0.02,放入文件夹0.02_0.02中,并记录采样后并截取的坐标是imagetest1_0_10000_10000_10000,
总结上述,即,判断哪些设备坐标截取了影像的哪些栅格,哪个范围大, 哪个范围小,
如果设备坐标范围大于等于栅格范围,则不重采样,直接截取即可。
如果设备坐标范围小于栅格范围,则需要重采样后截取相应的范围。
同理,在三维中,屏幕坐标中,地理范围是由视点的远近决定的,也就是level of detail,根据视口分级。也就是重采样。如果再精细些,就进行重采样后的物体进行裁切,只显示裁切范围内的。除非视口内<=1个栅格坐标,那就不用分级,也就是重采样了