1

標高データの128x128配列があり(-400mから8000mまでの標高は9色を使用して表示されます)、512x512にサイズ変更する必要があります。バイキュービック補間で実行しましたが、結果が奇妙に見えます。写真では、オリジナル、最も近い、バイキュービックを見ることができます。注:色自体ではなく、標高データのみが補間されます(色域は保持されます)。これらのアーティファクトは、私の悪い補間コードのバイキュービック画像の結果に見られますか、それとも離散(9ステップ)データの補間によって引き起こされますか?

http://i.stack.imgur.com/Qx2cl.png

4

2 に答える 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で手作業で実行できたことです。

PaintShopProのバイキュービック

于 2012-07-24T02:08:41.087 に答える
0

バイキュービック補間では、元の範囲外の補間値が生成される場合があります(これが発生しているかどうかを確認できますか?)実際にはバグがあるようですが、コードを見ずに言うのは難しいです。原則として、バイキュービック解は最近傍解よりも滑らかである必要があります。

編集:私はそれを取り戻します、私はあなたの画像の元の範囲外の補間値を見ません。それでも、奇妙な部分は、バイキュービックを使用したときに得られる「ギザギザ」だと思います。それを再確認することをお勧めします。

于 2012-07-23T17:49:17.537 に答える