前提:
・スキャン対象はコミックなどモノクロのもの
・それをカラーで読み取る。
・本が退色はあまりしてない前提。
・ベタ部分の縦線ノイズの検知

という前提の元で、色々とプログラムを組んでみて、
昨日の記事では、ここまでできたわけだ:

昨日の記事よりも分かりやすくするために、
右側は、オリジナルの画像を赤で表示されるようにして、その上に検知したポイントを水色表示するようにしてみた。

ところで、昨日の記事で

外郭局所的輪郭線特徴のアイディアを流用すれば出来そうな気がする。

とも書いたわけだけど、早速試して、色々調整してみた結果がこちら:

あともう少し?いや、十分実用に耐えそうな気がしないでもない。

やっていることは、以下のような処理。
1,各ピクセルをHSV色空間に変換。
2,評価するピクセルと、その周辺のピクセルのVの平均から、その部分がベタかどうかを判断。
3,ベタならば、評価するピクセルのSを見て、色が付いているピクセルかどうかの判断し、色が付いているならば、マークをする。
4,一度、1~3までの処理を画像全体に適用。
5,3でマークしたピクセルを中心に、3×3の窓を開く。
6,左上、右上、左下、右下の2×2のマークの状態を確認。これが縦ならば1、斜めならば0.5、横ならば0。評価不可(=4ピクセル全てがマークされているとか)とする。
7,この2×2の4つの特徴値の平均をだして、対象ピクセルが縦線に近いのかを判断する。

C#で、double精度で計算しているので、ちょっと時間がかかるのでその点では実用的では無い。
整数演算になるように式を変えるなり、SIMDをがりがり書いて最適化したいところだな。

ちなみに、上記処理で2のべた塗りかどうかの判断を抜かすと、
白地の部分での縦線ノイズが見つかるように思えるかも知れないけど、実際にはこうなる:

見ての通り、吹き出しの縦線とかがノイズとして検知されてしまいます。ぬぅ。