MATLAB、Python、Scilab、Julia比較ページはこちら
https://www.simulationroom999.com/blog/comparison-of-matlab-python-scilab/
はじめに
の、
MATLAB,Python,Scilab,Julia比較 第3章 その50【Hysteresis Threshold①】
MATLAB,Python,Scilab,Julia比較 第3章 その51【Hysteresis Threshold②】
MATLAB,Python,Scilab,Julia比較 第3章 その52【Hysteresis Threshold③】
非極大値抑制を用いて、エッジをいい感じに1本の線にしたが、
全体的に暗い。
この場合、2値化をして明暗をはっきりさえるのが常套手段。
これを実現するためのHysteresis Thresholdについての解説する。
いっそのこと2値化してしまいたい。
途中、インデックスサーチの話が入ったが、
画像処理としては非極大値抑制までをやった。
よって、かなり画像処理っぽい感じになってきたと思う。
しかし、非極大値抑制後の画像って妙に暗い。
もっと線の微分がはっきりした白とかになると良いかもしれない。
こういった、白と黒をはっきりさせることを2値化と言う。
まず、非極大値抑制を掛けた後の画像を見せよう。
そして、2値化したもの。
非極大値抑制を掛けた後の画像は、線は出てるのだが、
この線は、元画像の輝度に依存している。
これに対して、線として残すべき部分を強制的に白(256階調だと255)、それ以外を黒(256階調だと0)にした。
2値化の手法
2値化の手法として、最もシンプルなのは、
一定の閾値を超えた輝度を強制的に白にするってパターン。
しかしこれだと、無関係なものまで白になったり、必要なものまで黒になったりしやすい。
これに対して、Hysteresis Thresholdという手法を使うと、
「輝度が弱くても、強調したい線につながっていれば、それも白」
みたいなことが可能になる。
Hysteresis Thresholdの雰囲気
ところで、センサー情報で「ヒス付きで判定」というもの知っているだろうか?
High、Lowを確定させるのに、LowからHigh、HighからLowに移行する際の閾値を変えるような処理のことである。
考え方としては、Hysteresis Thresholdはそれと一緒になる。
※ 「ヒス付き」のヒスってHysteresisの略
Hysteresis Thresholdを図解
では、今回のHysteresis Thresholdを図解する。
実線が残るデータで、破線は消えるデータとなる。
雰囲気的にはセンサー情報に対するヒス付き判定と同じ見えると思う。
しかし、センサー情報は、横軸が時間で、判定も一個前との比較程度で済むのだが、
画像の場合は、平面であり、しかも判定も1方向にならない。
今回の図も、左から右方向の判定以外に、右から左方向の判定が入っている。
よって、平面上での信号の繋がりを判定するから、センサー情報のヒス付きと全く同じというわけにはいかない。
やや判定方法が複雑になると思った方が良いだろう。
判定の方法としては、以下になる。
- High以上は白
- Low未満は黒
- High-Lowの間の場合は周辺を探査し、エッジが居れば白、いなければ黒
ちなみにここで言っているエッジは、強制的に白判定にしたものになる。
High以上で白になったものもあれば、探査の結果として白になったものもあるが、
両方ともエッジとして解釈する。
そうすると、High以上の線と繋がっている線が残るようになって、
その結果として欲しい線だけが残る傾向が強くなる。
コメント