ホーム ] TIPS ] ソフトウェア実験室 ]

上へ
ビットマップの処理速度
色変換速度
数式演算速度
冪乗演算速度
検索速度
文字列処理速度
文字列/数値処理速度
CPU演算速度
TicksとPerformance Counter
文字の数値化
数値化文字の再現
数値化文字の補間
補間の効果
ネイピア数
ネイピア数2
指数関数近似値
級数の収束速度1
級数の収束速度2
級数の精度
逆三角関数を求める
算術幾何平均でπを求める
全フォルダ列挙
ビットマップとメモリリソース
配列とメモリリソース

ソフトウェア実験室

数値化文字の補間

最終更新:2006/02/24 修正

 文字列の極座標変換(T3611)で、結果を良く見ると、文字の変形具合は座標の極率に完全には一致してい ないことに気づく。


楕円座標上の文字

●原因

 これは、文字列を線分化して点集合にしているが、直線区間が長いと、この部分が座標変換の影響を受けないからである。例えば、ゴシックの漢数字の一では、下図のように、単純な矩形となってしまう。 演算は、点に施されるので、直線は直線のままになる。

●解決法

 二点間が直線であっても、中間点を追加すれば良い。つまり補間すれば良い。下図のように、比較的長いスパンの直線を保管する。


 

●方法

 既に、文字を点集合にできるし、それらがポリゴンの集合であることも認識できる。補間は、ポリゴン単位でおこない、新しい点集合とPathTypesテーブルを生成すれば良い。PathTypesは、文字として再現する時必要になる。


漢数字"一"の点集合

 上図の場合、始点(補間)中間点(補間)中間点(補間)終点(補間)始点 とすれば良い。終点と始点間も補間し、ブロックの最後の補間点が新しい終点となる。補間は、線形補間とする。元の点は維持する。

●アルゴリズム

 閾値dLを設け、二点間(x1,y1)(x2,y2)の距離Lをこの閾値で除した数を分割数Nとする。閾値は、文字のサイズや描画の解像度などで決める。

N = Int(L/dL) + 1    1 ≦ N
dX = (x2 - x1)/N     補間間隔
dY = (y2 - y1)/N

などなど。

●結果

○漢数字の一

  • 左上:オリジナルの文字(外形と内部)

  • 左下:数値化結果(外形とオリジナル点)

  • 右上:補間結果(dL = 10)

  • 右下:補間したものを再び文字化したもの

○漢字の田


内部の空白も正しく処理されている