標高データの128x128配列があり(-400mから8000mまでの標高は9色を使用して表示されます)、512x512にサイズ変更する必要があります。バイキュービック補間で実行しましたが、結果が奇妙に見えます。写真では、オリジナル、最も近い、バイキュービックを見ることができます。注:色自体ではなく、標高データのみが補間されます(色域は保持されます)。これらのアーティファクトは、私の悪い補間コードのバイキュービック画像の結果に見られますか、それとも離散(9ステップ)データの補間によって引き起こされますか?
質問する
1165 次
2 に答える
2
使用しているバイキュービックコードに問題があるはずです。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のバイキュービックも最高ではありません。これが、上記とほぼ同じ手順を使用して、PaintShopProで手作業で実行できたことです。
于 2012-07-24T02:08:41.087 に答える
0
バイキュービック補間では、元の範囲外の補間値が生成される場合があります(これが発生しているかどうかを確認できますか?)実際にはバグがあるようですが、コードを見ずに言うのは難しいです。原則として、バイキュービック解は最近傍解よりも滑らかである必要があります。
編集:私はそれを取り戻します、私はあなたの画像の元の範囲外の補間値を見ません。それでも、奇妙な部分は、バイキュービックを使用したときに得られる「ギザギザ」だと思います。それを再確認することをお勧めします。
于 2012-07-23T17:49:17.537 に答える