範囲[0, 256)のCOLOR値xを持つピクセルが与えられた場合、ROSメッセージに入れるときにこの値をどのように解釈する必要があるかについて説明します。最初に、yamlのnegateフラグの解釈に応じて、整数xを浮動小数点数pに変換します。
• negateがfalseの場合: p = (255 - x) / 255.0
これは、黒(0)が最高値(1.0)になり、白(255)が最低値(0.0)になることを意味します。
• negateがtrueの場合: p = x / 255.0
これは画像の非標準的な解釈です。xが否定されていないことを数学が示しているにもかかわらず、negate(否定)と呼ばれるのはこのためです。
2.3.1 Trinary
標準的な解釈は3項(Trinary)解釈です。つまり、すべての値を解釈して、出力が3つの値のいずれかになるようにします。
• p > occupied_thresh の場合: セルが占有されていることを示す値100を出力します。
• p < free_thresh の場合: 値0を出力して、セルが占有されていないことを示します。
• それ以外の場合: -1 (unsigned charの場合 255)を出力して、セルが不明であることを示します。
2.3.2 Scale
このモードは、上記の解釈を微調整して、3項よりも多くの出力値を許可します。
• Trinaryと同様に、p > occupied_threshの場合、値100を出力します。p < free_thresh の場合、値0を出力します。
• それ以外の場合: 99 * (p - free_thresh) / (occupied_thresh - free_thresh) を出力します。
これにより、[0, 100]の範囲の値の完全な勾配を出力できます。-1を出力するには、PNGのアルファチャネルを使用します。この場合、透明度は不明と解釈されます。