Ticket #8 (closed バグ報告: fixed)

Opened 11 years ago

Last modified 9 years ago

負の値を含んだ mist::array2<double> 型の画像は線形内挿できないのでしょうか?

Reported by: mocchi_2003@… Owned by: ddeguchi
Priority: Milestone:
Component: Mist Version: 1.3
Keywords: Cc:

Description

度々申し訳ありません。

mist::array2<double> 型の画像に対して線形内挿処理を施しているのですが、画像が 負の値を含んでいる場合、負の値となっている部分が全て2.225e-308 (=DBL_MIN) となってしまいます。負の値の部分に関しても線形内挿できるようにして下さると 非常に助かります。

Change History

comment:1 Changed 11 years ago by anonymous

  • Type changed from 要望 to バグ報告

追記します。 開発環境は Visual C++ 2005 Express Editionです。

また、mist::array1 の正負に振動する波形に対してmist::sinc::interpolated を施した際に、同様の現象を確認しました。

comment:2 Changed 11 years ago by ddeguchi

  • Owner changed from somebody to ddeguchi
  • Status changed from new to assigned

comment:3 Changed 11 years ago by ddeguchi

バグ報告ありがとうございます.

この問題の原因は,内挿結果を画像に書き戻す際に,値の範囲チェックを行っているのですが,その際の下限の値の設定に問題があった模様です. というのも,type_limits 関数の minimum は表現できる負を含む最小の値のつもりだったのですが,間違って DBL_MIN を設定していた模様です. そのため,float,double,long double では内挿結果が負になった場合は,正の最小値に置き換えられていました. 結果的には,画像の要素が float,double,long double の場合は,どの内挿方法でも問題が発生する可能性があったと思われます.

mist/limits.h を修正することで問題を解決しました. この修正により,float,double ,long double の type_limits<>::minimum() 関数は表現できる負の最小値を表すようになります.

コミット [837] で問題を修正しました. mist/limits.h をSVN経由でダウンロードして試してみてください.

comment:4 Changed 11 years ago by ddeguchi

mist/limits.h の変更で影響が及ぶファイルを,コミット[838][839]でいくつか変更しました. また,type_limits::tiny() 関数が DBL_MIN 等に対応するようにしました.

このバグはかなり致命的なので,今週末にでもパッケージのリリースをしたいと思います. それまでにテストする際は,リポジトリ内の最新のソースを利用してください.

comment:5 Changed 11 years ago by anonymous

  • Status changed from assigned to closed
  • Resolution set to fixed

今回も迅速な対応ありがとうございます。

コミット[839] の後のlimits.h をダウンロードし、array2<double>とarray1<double>に関してそれぞれ試したところ、負の値も内挿処理ができました。

Note: See TracTickets for help on using tickets.