モノクロ画像のビット深度を8bitから32bitにする方法を教えてください。そもそもビット深度を上げることができるかどうかも分かりません。
前提
Pythonは初心者ですが、使える環境にはあります。
試したこと
https://teratail.com/questions/87069?sort=3
を見てみましたが、書いてあることがよく分かりませんでした。
示されたリンク先の質問も
> どのようなルールの下で変換するおつもりなのか追記してください
とコメントされていますが,
「所望の32bitにした結果」とは何なのか? について述べる必要があるのではないでしょうか.
モノクロをフルカラーにするだけでは?
入力が 8bit 1ch な画像で,各画素の値が符号なし8bit整数であるのだとして(←ここから違ってたりして)…
32bitにする,とは何か?
・8bit 3ch にする
・32bit 1ch にする(その場合の 32bit とは? 符号なし32bit整数? 32bitのfloat的な? その他?)
・それ以外?
>fana様
ありがとうございます。
「所望の32bitにした結果」に対して、何を答えれば良いかわかっていませんでした。
入力が8bit 1ch(符号なし8bit整数)で、出力が32bit 1ch(float)です。
質問への直接の回答ではありませんが、
> 別のPythonのプログラム処理して出力された、Aと同じになるはずのビット深度8のモノクロ画像Bがあります。
(OpenCVで出力したので、8bitになってしまいます)
当方のmacのpythonで下記のコードで確認したら、「float32」で画像ファイルに保存できるようです
import numpy as np
import cv2
# 型がfloat32のグレースケールデータを作成して、画像ファイルに保存
img1 = np.linspace(0, 1, 512, dtype=np.float32)
img2 = np.tile(img1, (512, 1))
cv2.imwrite("img2.tiff", img2)
# 保存した画像ファイルを読み込んで、型がfloat32であることを確認
img2_2 = cv2.imread("img2.tiff", cv2.IMREAD_UNCHANGED)
print(img2_2.dtype)
# float32
# 画像ファイルから読み込んだデータが、元のグレースケールデータと同じであることを確認
img2d = img2_2 - img2
print(img2d.dtype)
# float32
print(np.max(img2d))
# 0.0
print(np.min(img2d))
# 0.0
>jbpb0様
対応が遅くなって申し訳ありません。
私の環境でもfloat32で保存できました。
どうもありがとうございました。

回答2件
あなたの回答
tips
プレビュー