イメージをより小さい次元に適合フォーマットでサイズ変更したいと思います。たとえば、100x100ピクセルの画像を58x58ピクセルの画像にリサイズしたいとします。配列の値は、強度値またはフラックス値です。私は画像の全体の強度を変換後に保存したい。これは、skimageのサイズ変更では機能しません。私の総価値は、私がスケールアップするか、スケールダウンするかによって異なります。私はこれまでに試したコードの下に示しました。skimage resizeは配列の総和を変更します
import numpy as np
from skimage.transform import resize
image=fits.open(directory+file1)
cutout=image[0].data
out = resize(cutout, (58,58), order=1, preserve_range=True)
print(np.sum(out),np.sum(cutout))
私の出力は次のようになります。私が欲しいもの
out = resize(cutout, (100,100), order=1, preserve_range=True)
print(np.sum(out),np.sum(cutout))
私の出力は非常に近いです:
0.074657436655 0.22187 (I want these two values to be equal)
は、私が使用して、同じ次元にそれを拡張した場合
0.221869631852 0.22187
私は同じ問題を抱えていますイメージサイズも同様にしてください。
out = resize(cutout, (200,200), order=1, preserve_range=True)
print(np.sum(out),np.sum(cutout))
出力:
0.887316320731 0.22187
私は、この問題に対する何らかの回避策があるかどうかを知りたいです。
EDIT 1:
私はちょうど私が私が私のイメージのサイズを増減したいの規模の二乗で私の画像を掛けた場合、その後、私の合計が保存されていることに気づきました。例えば
:
x=58
out = resize(cutout, (x,x), order=1, preserve_range=True)
test=out*(100/x)**2
print(np.sum(test),np.sum(cutout))
私の出力は、私が欲しいものに非常に近いが、わずかに高くなっている。
0.221930548915 0.22187
私は別の次元でこれを試してみましたが、それは本当に小さな値を除いて動作します。なぜこの関係が真実であるのか、これはちょうど統計的な偶然であるのか誰にも説明できますか?
理由だけで、スケーリング後の強度を再正規化しませんか? – maxymoo
強度をスケールファクターの2乗として正規化すべきですか?これが当てはまる場合、なぜこの関係が本当であるのか教えていただけますか? – Vishnu
http://scikit-image.org/docs/dev/api/skimage.transform.html#skimage.transform.downscale_local_mean –