我有一張高分辨率圖像,我想用作使用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