質問するログイン新規登録

回答編集履歴

3

fix

2016/10/27 00:54

投稿

yohhoy
yohhoy

スコア6191

answer CHANGED
@@ -5,7 +5,7 @@
5
5
  ```Python
6
6
  # 明示的にfloat型に変換
7
7
  n = img.astype(np.float_)
8
- # 各画素値に p = log(p + 1) * 256 / log(256) を適用
8
+ # 各画素値に p = log(p + 1) * 255/log(256) を適用
9
9
  n = np.log(n + 1.) * (255. / math.log(256))
10
10
  # OpenCVで扱える画像データ型(uint8)に変換
11
11
  n = n.astype(np.uint8)

2

fix

2016/10/27 00:54

投稿

yohhoy
yohhoy

スコア6191

answer CHANGED
@@ -1,12 +1,12 @@
1
1
  `cv2.imshow`関数がfloat型データを扱えないために該当エラーメッセージとなっています。
2
2
 
3
- グレイスケール画像に対して`np.log`を適用したタイミングで、結果`n`はfloat型データに自動変換されます。ただし定義上log(0)=‐∞となってしまうため、入力画素値0~255は+1して値域1~256に変換しておいた方がよいでしょう。このとき元のuint8型データのまま+1すると255は0になってしまうため、事前にfloat型に明示変換する必要があります。また対数をとると値域が小さく(log(1)〜log(256) つまり 0〜5.545...)なってしまうため、256/log(256)でスケーリングする必要があります。
3
+ グレイスケール画像に対して`np.log`を適用したタイミングで、結果`n`はfloat型データに自動変換されます。ただし定義上log(0)=‐∞となってしまうため、入力画素値0~255は+1して値域1~256に変換しておいた方がよいでしょう。このとき元のuint8型データのまま+1すると255は0になってしまうため、事前にfloat型に明示変換する必要があります。また対数をとると値域が小さく(log(1)〜log(256) つまり 0〜5.545...)なってしまうため、255/log(256)でスケーリングする必要があります。
4
4
 
5
5
  ```Python
6
6
  # 明示的にfloat型に変換
7
7
  n = img.astype(np.float_)
8
8
  # 各画素値に p = log(p + 1) * 256 / log(256) を適用
9
- n = np.log(n + 1.) * (256. / math.log(256))
9
+ n = np.log(n + 1.) * (255. / math.log(256))
10
10
  # OpenCVで扱える画像データ型(uint8)に変換
11
11
  n = n.astype(np.uint8)
12
12
  ```

1

fix

2016/10/27 00:53

投稿

yohhoy
yohhoy

スコア6191

answer CHANGED
@@ -1,10 +1,12 @@
1
1
  `cv2.imshow`関数がfloat型データを扱えないために該当エラーメッセージとなっています。
2
2
 
3
- グレイスケール画像に対して`np.log`を適用したタイミングで、結果`n`はfloat型データに変換されています。また対数をとると値域が小さく(log(1)〜log(256) つまり 0〜2.408...)なってしまうため、256/log(256)でスケーリングする必要があります。
3
+ グレイスケール画像に対して`np.log`を適用したタイミングで、結果`n`はfloat型データに自動変換されます。ただし定義上log(0)=‐∞となっしまうため、入力画素値0~255は+1して値域1~256に変換しておた方がよいでしょう。このとき元のuint8型データのま+1ると255は0になってしまうため、事前にfloat型に明示変換する必要があります。また対数をとると値域が小さく(log(1)〜log(256) つまり 0〜5.545...)なってしまうため、256/log(256)でスケーリングする必要があります。
4
4
 
5
5
  ```Python
6
+ # 明示的にfloat型に変換
7
+ n = img.astype(np.float_)
6
8
  # 各画素値に p = log(p + 1) * 256 / log(256) を適用
7
- n = np.log(img + 1) * (256. / math.log(256))
9
+ n = np.log(n + 1.) * (256. / math.log(256))
8
10
  # OpenCVで扱える画像データ型(uint8)に変換
9
11
  n = n.astype(np.uint8)
10
12
  ```