我有一张高分辨率图像,我想用作使用Google Maps API v3进行平铺的地图叠加。在使用Python进行抗锯齿时使用透明边缘消除边缘处的薄边界图像库
我用MapTiler把它分成合适的瓷砖,在所需的缩放级别。除了在原始图像的边缘的贴图上有一个薄的灰黑色边框之外,该方法运行良好。
继第二篇文章http://groups.google.com/group/maptiler/browse_thread/thread/70a4c5610538332a/42fefedb4a0bc6d2的建议之后,我尝试了使用gdal2tiles.py,并将-r antialias
选项传递给该选项,但细边界仍然存在。
如果我打开实际生成的图像砖,细边框似乎的确是产生瓷砖的一部分,但它并不是原始图像的一部分。
我怀疑正在发生的事情是,我没有数据的谷歌地图图块的部分被处理为黑色像素时,程序生成的平铺图像文件,结果是灰色的边框。
这就是我认为是从gdal2tiles.py相关代码:
# Scaling by PIL (Python Imaging Library) - improved Lanczos
array = numpy.zeros((querysize, querysize, tilebands), numpy.uint8)
for i in range(tilebands):
array[:,:,i] = gdalarray.BandReadAsArray(dsquery.GetRasterBand(i+1), 0, 0, querysize, querysize)
im = Image.fromarray(array, 'RGBA') # Always four bands
im1 = im.resize((tilesize,tilesize), Image.ANTIALIAS)
if os.path.exists(tilefilename):
im0 = Image.open(tilefilename)
im1 = Image.composite(im1, im0, im1)
im1.save(tilefilename,self.tiledriver)
任何想法如何让这个边界是不存在的,短期在打开相关生成平铺图像文件图像编辑器并将相关像素设置为透明?
我怀疑答案涉及寻找一些方式来表示透明的像素,使得抗锯齿忽略他们采样的目的。
更新:它可能不会赢得任何优雅或表演的奖项,但我认为,在这方面我是最有影响力的。当然,最后几码也是最难的。
如果我将ANTIALIAS更改为BICUBIC,然后处理alpha通道以使任何半透明像素都呈现完全透明状态,则我会摆脱大部分图块上的大部分边框。但是,一些浅色的边界线仍然存在。我不知道该怎么做。还值得一提的是,如果图像中的透明或半透明像素不在实际图像区域的边缘外,我想这种策略可能效果不佳。
这里的这些修改代码:
# Scaling by PIL (Python Imaging Library) - improved Lanczos
array = numpy.zeros((querysize, querysize, tilebands), numpy.uint8)
for i in range(tilebands):
array[:,:,i] = gdalarray.BandReadAsArray(dsquery.GetRasterBand(i+1), 0, 0, querysize, querysize)
im = Image.fromarray(array, 'RGBA') # Always four bands
im1 = im.resize((tilesize,tilesize), Image.BICUBIC)
if os.path.exists(tilefilename):
im0 = Image.open(tilefilename)
im1 = Image.composite(im1, im0, im1)
im1AsArray = numpy.array(im1)
alpha = im1AsArray[:,:,3]
semiTransparentIndices = alpha < 255
alpha[semiTransparentIndices] = 0
im1AsArray[:,:,3] = alpha
im1 = Image.fromarray(im1AsArray, 'RGBA')
im1.save(tilefilename,self.tiledriver)
使用'Image.NEAREST',而不是'Image.ANTIALIAS'摆脱了边框的,但当然再瓷砖的其余部分看起来完全可怕.... – Trott 2011-05-13 22:58:01
将BICUBIC更改为BILINEAR的技巧。猜猜我可以回答我自己的问题。 – Trott 2011-05-14 05:49:18