我有一個128x128的高程數據陣列(使用9種顏色顯示從-400m到8000m的高程),我需要將其大小調整爲512x512。我用雙三次插值做了它,但結果看起來很奇怪。在圖片中,您可以看到原始的,最近的和雙立方的。注意:只有高程數據被內插,而不是顏色本身(色域被保留)。這些僞影是否出現在我的不良插值代碼的雙三次圖像結果上,或者是由離散(9步)數據的插值引起的?爲什麼我的離散數據的雙三次插值看起來很醜?
http://i.stack.imgur.com/Qx2cl.png
我有一個128x128的高程數據陣列(使用9種顏色顯示從-400m到8000m的高程),我需要將其大小調整爲512x512。我用雙三次插值做了它,但結果看起來很奇怪。在圖片中,您可以看到原始的,最近的和雙立方的。注意:只有高程數據被內插,而不是顏色本身(色域被保留)。這些僞影是否出現在我的不良插值代碼的雙三次圖像結果上,或者是由離散(9步)數據的插值引起的?爲什麼我的離散數據的雙三次插值看起來很醜?
http://i.stack.imgur.com/Qx2cl.png
您使用的雙語代碼必須有問題。這裏是我的結果與Python:
外繞黑色邊框是它的結果是調色板之外,由於振鈴。
下面是產生上述的程序:
from PIL import Image
im = Image.open(r'c:\temp\temp.png')
# convert the image to a grayscale with 8 values from 10 to 17
levels=((0,0,255),(1,255,0),(255,255,0),(255,0,0),(255,175,175),(255,0,255),(1,255,255),(255,255,255))
img = Image.new('L', im.size)
iml = im.load()
imgl = img.load()
colormap = {}
for i, color in enumerate(levels):
colormap[color] = 10 + i
width, height = im.size
for y in range(height):
for x in range(width):
imgl[x,y] = colormap[iml[x,y]]
# resize using Bicubic and restore the original palette
im4x = img.resize((4*width, 4*height), Image.BICUBIC)
palette = []
for i in range(256):
if 10 <= i < 10+len(levels):
palette.extend(levels[i-10])
else:
palette.extend((i, i, i))
im4x.putpalette(palette)
im4x.save(r'c:\temp\temp3.png')
編輯:顯然Python的雙立方是不是最好的。以下是我能夠在Paint Shop Pro中手動完成的工作,使用與上述大致相同的步驟。
這看起來完全如我所願。所以雙三合是沒問題的。現在我知道問題出在哪裏,可以繼續前進。謝謝! – 2012-07-24 11:39:21
雖然雙三次插值有時會生成原始範圍外插的值(你能驗證,如果發生這種情況給你?)這真的好像你可能有一個bug,但很難不說看代碼。作爲一般規則,雙三次方解決方案應該比最近鄰解決方案更平滑。
編輯:我回過頭來看,在圖像中我看不到在原始範圍之外插值。儘管如此,我認爲奇怪的部分是使用雙三次方法時出現的「鋸齒狀」,您可能需要仔細檢查一下。
這也是我的第一個想法,但我不認爲這是這裏的情況是由樣本來判斷的。 – 2012-07-23 17:51:49
是的...不是的。不過,鋸齒很奇怪。 – carlosdc 2012-07-23 18:05:31
大海的海拔高度值爲-9999,與零高度的土地不同,所以灰點(海底水平)是可以的。是的,鋸齒是問題。我會對顏色進行雙三次檢查來檢查例程。我可以發佈代碼,但不想打擾你。 – 2012-07-23 21:00:28
你用什麼軟件來做雙三次插值? – 2012-07-23 17:46:06
我正在使用這個人的圖書館:[鏈接](http://www.ee.ucl.ac.uk/~mflanaga/java/BiCubicSpline.html)
和這個人的代碼片段:[鏈接](http:///www.paulinternet.nl/?page=bicubic)
但都產生相同的結果,所以eiter我錯誤地實現它們或雙三次插值不適合這種情況。無論如何,有第三個我會嘗試:[鏈接](http://mrl.nyu.edu/~perlin/java/Bicubic.html) – 2012-07-23 20:38:01