2015年5月23日 (土)

RLE圧縮画像のデコード実験

■RLE圧縮画像のデコード実験
魔法の大鍋  EPWING形式辞書
 http://blog.eldhrimnir.com/wordpress/?page_id=425
のWikipediaのBMP画像対応のため,調査とテストを行った.

調査結果
・圧縮形式:8bit ランレングス圧縮(RLE8)
・色数  :256色
・カラーパレット:4*256バイト
・従前の処理では,画像の白黒が反転する.(LX上では黒の背景に白文字)
・画像データの各バイトは,色ではなく,カラーパレットの番号を指定している.
・デコード後のデータを,色に変換した後,さらに,モノクロ変換する必要がある.
 256色 ==> モノクロ変換の閾値の決定が重要

RLE圧縮のエンコード法,デコード法は,インターネット上にソースコード
で公開されている.実装に特段の困難はない.

テスト
・画像変換プログラムにRLEデコード機能を追加
・256色 ==> モノクロ変換:2値化のしきい値の最適化
 画像が数式であるため,誤差拡散法は用いない.
・画像の白黒反転処理

実際の画像
しきい値の異なる2つの画像
Feyn01  
Feyn02
                                            .
                                            . [HP200LX/LXDIC]

|

2015年5月22日 (金)

Wikipedia Reform Kitのターゲット

■Wikipedia Reform Kitのターゲット
SourceForge.JP:Boookendsプロジェクトの Wikipedia(ja)Lite[EPWING版]

現在のバージョン(5.2)は,これ以外の辞書には使えない.

理由:
・特定のインデックスが存在するものとして,それらの再構成を行っている.
 あるはずのインデックスが無いと,不整合が生じる. (reform.exe)
・画像変換は,圧縮形式のbmpには対応していない.
 元画像が圧縮形式のbmpの場合,変換が正常終了するように見えても,
 正しい画像は得られていない. (wconv.exe)

正常な再構成/変換に失敗する例
 魔法の大鍋  EPWING形式辞書
 http://blog.eldhrimnir.com/wordpress/?page_id=425
※この例では,メニューが無く,bmp画像が圧縮されている.

(補足) 
RLE8圧縮bitmapに対応可能がどうか検討中

[HP200LX/LXDIC]

|

2015年5月21日 (木)

広辞苑第6版

■広辞苑第6版
広辞苑第6版をHP200LXにインストール
 画像変換プログラム:gconv31c(汎用版:公開済)
  ※kjconvは広辞苑第5版専用で,第6版には使えない.

今回は,フルサイズの辞書を使うので,squeezeは使用しない.
gconv.exe, gaddr.exe の変換処理のみ.

第5版 ==> 6版の変化
・本文サイズ:7MB増加
・画像サイズ:1.5倍に増加(元画像)
      : 8MB減少(変換済画像)
・画像数  :10291 ==> 10399
・検索速度:ほとんど同じ

※辞書本文サイズの増加は小さく,大きな変化はない.
※画像ファイルが1.5倍に増大しているにもかかわらず,変換後のimgファイル
 サイズが,減少している理由は不明(画像変換プログラムの不具合?)

●ファイルサイズデータ
ファイル   広辞苑第5版   広辞苑第6版
----------------------------------------------------------------------
honmong    212,977,664    324,378,624   JPEG画像
honmon.org  220,100,608    226,723,840   非圧縮辞書
----------------------------------------------------------------------
kojien    220,100,608    226,723,840   処理済辞書
kojien.img  102,096,768     93,500,780   変換済モノクロ画像
----------------------------------------------------------------------
kojien.lzs  -----------    113,767,144   圧縮後の辞書
                                               . 

●表示例
フルサイズの広辞苑では,人名検索,漢字検索など,辞書が固有に定義して
いる検索名称を表示できる.(検索固有名称)Koji6c2  

写真にイラストが追加されている項目
Koji6b1 
Koji6b2  
Koji6b3  
Koji6b4  

[HP200LX/LXDIC]

|

2015年5月20日 (水)

IMG画像PCX化プログラム

■ IMG画像PCX化プログラム (未公開)
BMPCX Ver.5
・WBMPCXの2GB未満版
・モノクロビットマップのimgファイルをPCX化して,圧縮する.
・画像変換実行後,アドレス書換の前に,本プログラムを適用する.
※imgconvと同様の機能をもつが,処理内容/手順が異なる.
 imgconvは,変換処理が完了している辞書/画像を修正する仕様.
 本プログラムは,本来の変換処理の途中に,PCX化処理を追加する.
 変換処理を1から行うことを想定した仕様 
 

●ファイル
・bmpcx.exe    IMG画像PCX化プロラム            [Wikipedia専用][Win32]

●使い方
 bmpcx dmane_t.img dname.img      <-- 拡張子を含むファイル名で指定
       ~~~~↑~~~~   ~~~~↑~~
        元画像名     新画像名(辞書名.img)

●画像コンバーターの作業手順の変更点
画像変換処理の後に,PCX化処理を追加する.(imgconvとは手順が異なる)
一部中間ファイルの名称変更が必要になる.

処理条件
 汎用コンバータ:gconv.exe, gaddr.exe 
 辞書名    :dname      <--- 拡張子を除いた名称

(1).画像変換
  gconv honmon.org dname_t     <--- 仮の辞書名(拡張子なし)を指定
   入力ファイル:honmon .org   オリジナルの辞書ファイル
   出力ファイル:dname_t.img   画像ファイル(仮辞書名.img)
                dname_t.tbl   アドレス対照表(仮辞書名.tbl)

 1b . 画像PCX化  <=== 追加処理 
  bmpcx dname_t.img dname.img   <---本来の辞書名.img を使う
   入力ファイル:dname_t.img     ビットマップ画像ファイル
   出力ファイル:dname  .img     PCX形式の画像ファイル(辞書名.img)
                dname  .tbl     PCX用のアドレス表(辞書名.tbl)

(2).本文画像アドレス書換え
  gaddr honmon.org dname      <--- 辞書名(拡張子なし)を指定
   入力ファイル:honmon.org    再構成済の辞書ファイル
                 dname .tbl    アドレス表(辞書名.tbl)
   出力ファイル:dname .hon    新アドレスの辞書(辞書名.tbl)

(3)カラー図版削除(squeeze 1.0 使用)

 プログラム相互の関係(※印のファイルを使用する)

           (gaddr)      (squeeze)       
   honmon.org  --------+---> dname.hon -----> dname ※     
    |(gconv)     ↑           |(lzcomp)  
    ↓        |           ↓ 圧縮する場合
   dname_t.tbl ----> dname.tbl        dname.hlz ※   
   dname_t.img ----> dname.img ※      dname.blk ※   
         (bmpcx) PCX化する場合    

   

●動作
・Windows 2000 以降のコマンドプロンプトで動作(2000以前は未確認)
・ターゲットは,ファイルサイズが2GiB未満の辞書

[HP200LX/LXDIC]

|

2015年5月19日 (火)

Wikipedia画像圧縮プログラム

■ Wikipedia画像PCX化プログラム(公開)
 
このプログラムの必要性は低いが,2GB未満版(imgconv)に対応する4GB超版
として,ユーティリティ構成を完結させておく.

WBMPCX.EXE Ver.5(WRefKit5.2に含まれる)
・モノクロビットマップのimgファイルをPCX化して,圧縮する.
・画像変換処理の途中に,このプログラムによる処理を挿入する.

プログラムの使い方
 wbmpcx wikipt.img wikip.img      <-- 拡張子を含む画像ファイル名を指定
        ~~~~↑~~~  ~~~~↑~~~
         元画像名    新画像名(辞書名.img)

 

Wikipedia Reform Kit 5.2(公開)
作業手順
1.辞書再構成
  reform honmon.org honmon.ref
2.画像変換
  wconv honmon.org wikipt        <--- 仮辞書名を使用
 (追加処理:PCX化)
  wbmpcx wikipt.img wikip.img    <--- 本来のIMGファイル名で出力
3.アドレス書換
  waddr honmon.ref wikip
4.辞書圧縮
  wcomp wikip.hon wikip.hlz

 

圧縮効果(20150422版):圧縮率60%
  WIKIP .IMG        52,380,484 bmp形式画像
  WIKIPP.IMG        30,766,474 pcx形式画像

 

[HP200LX/LXDIC]

|

2015年5月18日 (月)

LXDIC:操作メモ

/////////////////////////////////////////////////////////////////////////
  LXDIC:操作メモ                                2015.5.17   kiz
/////////////////////////////////////////////////////////////////////////

 
 

------------------------------------
  キーワード入力画面
------------------------------------
・起動時
 設定ファイルで指定された辞書がオープンされる.
 指定辞書のオープンに失敗した場合は,起動できない.(設定に注意)

・辞書選択モード(\キー)
 キャンセル(ESC)
 辞書グループ変更(\キー)
 辞書名詳細表示(TABキー)
 辞書選択(Fキー,数字キー)
 選択モードに入ると,メニュー等の他の操作は一切受け付けつけない.

・ローマ字かな変換
 R-かな(F9)でON/OFF

・かな-カナ変換(Zoomキー)
 ひらがなで入力した単語をカタカナに一括変換する.
 リーダーズ英和辞典のカタカナ転写キーワードに対応するための機能

・完全一致検索ON/OFF(F4)
 前方一致/後方一致検索の場合,完全一致を指定できる.

・条件検索の見出しリスト取得のON/OFF('+'キー)
 条件検索では,個別の見出しはなく,一括の見出しリストを用いる事がある.
 検索時間短縮のため,見出しリストを本文第1行目で代替する機能を用意した.
 条件検索インデックスを選択すると,"ttl+" または "ttl-" が表示される.
 ON/OFFは,'+'キー.
  ON(ttl+) :見出しリストを使用
  OFF(ttl-):見出しリストを取得せず,本文第1行を代替使用

・複合検索
 複合検索群の選択(Tab, Shift+Tab, または,Ctrl+←, Ctrl+→)
 インデックス選択(↑,↓)
 スタック操作(Shift+1,2,3,4,5,6)
  スタックに積んだ単語の削除や入替えを行うための機能
 入力候補テーブル('/', F3)
  漢和辞典等で,辞書が規定した入力語句を一覧表から選ぶ.
  選択した語句は,スタックへ積まれ,複合検索に用いられる.

・絞込み検索(F6)
 複合検索の結果,候補が多すぎる場合は,他の条件で絞り込むことができる.
 好みのインデックスを選択後,検索語を入力して,F6で検索する.

・入力ラインの代替表示ON/Off(Ctrl+l,Ctrl+k)
 入力ラインに外字を入力すると,文字化けが発生する.(文字列コピー等)
 入力ラインの下に16ドットフォントによる代替表示を用意した.
  Ctrl+l:表示, Ctrl+k:消去

・メニュー検索(F2)
 メニューを用意している辞書の場合は,F2で表示できる.

・検索履歴
 検索履歴の表示は,(PgUp, PgDn)キー.
 検索履歴は簡易的なもので,上限256バイト.(30語前後)
 サイズが上限を越える場合は,古いものから破棄される.
 検索成功時,または,スタックに積むたびに,暗号化して保存する.


------------------------------------
  該当項目一覧画面
------------------------------------
・表示の都度,表示ページ(10項目分の見出し)を読込む仕様
 該当項目が200件の場合でも,表示するときは,10件分しか読込んでいない.
 ページが変るたびに,10件分を読込む.
 検索終了から,一覧表第1ページの表示終了までの時間短縮を優先した.
・プログラムタイトル部の数値表示は,カーソル位置の項目番号/全項目数


------------------------------------
  本文表示画面
------------------------------------
・行番号表示
 プログラムタイトル部の数値表示は,現在ページ最終行番号/全行数

・テキスト・画像のシームレスなスクロール
 テキスト行と同じ高さに画像を分割して表示することにより,画像行とテキスト
 行を同等に扱い,スムーズなスクロールを可能にしている.

・画像表示
 画像表示のON/OFF(Del,Ins)
  OFFにすると,各行ごとに画像種と画像アドレスが表示される.
 画像の左右スクロール(Ctrl+→, Ctrl+←)
 画像の左右端へ移動(Ctrl+k, Ctrl+l)
 画像の左右スクロールでは,画像のみが動き,テキストは動かない.

・コピー機能
 文字列選択コピーモード(Ctrl+↓,Ctrl+Enter)
  Shift or Ctrl+左右矢印で文字列を選択し,'c'または,Enterでコピーする.
  コピー文字列は,クリップボードと入力ラインにコピーされる.
 ページコピー('/'キー)
  現在表示中の画面(10行分)をクリップボードにコピーする.
 項目コピー(copyキー)
  現在の項目を,CB容量の上限までクリップボードにコピーする.

・再描画('*'キー)
 スクロールで,FEPのゴミが発生した場合や,リンク項目に割振られた番号が
 乱れた場合に,これらの不都合は再描画で解消することができる.

・見出し行表示('+'キー)
 行数の多い項目の,見出しが見えない位置で,見出しを表示する.
 単純に項目の1行目を表示している.(簡易的な機能で完全ではない)

・表示項目アドレス表示('-'キー)
 現在表示している項目の開始アドレスを,ブロック番号:オフセットで表示する.
 項目の本文内位置の目安になる.

・本文表示履歴(F9,F10)
 本文の表示履歴を30件保存している.
 現在までの表示履歴をたどって再表示することができる.(履歴番号表示)
 ESCキーは,表示履歴も含め,前の表示に戻る機能.

・前項目と次項目(F7,F8)
 辞書の本文の並びで,前の項目と次の項目を表示する.
 検索結果一覧の並びとは一致しない.

・本文内単語検索(F3,F4)
 本文内の語句の検索を行う.
 順方向と逆方向がある.同一方向,同一語句の検索はF4で連続実行できる.

 

------------------------------------
  ヘルプ表示(F1)
------------------------------------
 次ページ:↓,→,  前ページ:←,↑
 表示終了:ESC,'\'キー
 他のキー入力は受けつけない.

[HP200LX/LXDIC]

|

2015年5月17日 (日)

Wikipedia(ja)20150422Lite

■Wikipedia(ja)20150422Lite
 使用段階の辞書サイズは,約30MB増加. 全合計=3300MB
 
ファイルサイズ(圧縮単位16KB)
  honmon.ebz     3,656,474,815 圧縮辞書
  honmon.org     9,658,826,752 非圧縮辞書
  honmon.ref     6,728,740,864 再構成後の辞書
  WIKIP .IMG        52,380,484 bmp形式画像
 
  WIKIPP.HLZ     3,261,666,706 LXDIC圧縮辞書(+30MB)
  WIKIPP.BLK         2,443,224 ブロック情報
  WIKIPP.IMG        30,766,474 pcx形式画像
  GAI16F.ORG           278,528 全角外字
  GAI16H.ORG           143,360 半角外字
 
[HP200LX/LXDIC]

|

2015年5月16日 (土)

LXDIC実験室5

■LXDIC実験室5
Wikipediaの数式画像の圧縮

LXDICは,モノクロPCX形式の画像の表示に対応している.
モノクロビットマップ形式画像を,モノクロPCX形式に変換するプログラム
を作成すれば,画像の圧縮が可能になる.

●テストプログラム
wbm2pcx.exe   Wikipedia用
 ・モノクロビットマップ  ==> モノクロPCX
 ・アドレス変換テーブル修正(_int64, _int64)

(作業手順)
・従来の画像変換とアドレス書換えの間にPCX化の作業を挿入する.
・画像アドレスの書換えでは,新しいアドレス変換テープルを使用する.
 画像モノクロビットマップ変換 ==> (PCX化) ==> 画像アドレス書換

データ
 圧縮前 51,877,244
 圧縮後 30,443,027

効果
元画像のサイズが小さいため,手間に比べて効果は小さい.(-20MB)

 

PCX化画像の表示
Lxdl66b2  
画像の種別表示(Delキー)
Lxdl66b3  

[HP200LX/LXDIC]

|

2015年5月14日 (木)

LXDIC 16.8b

■LXDIC 16.8b
                                 .
●変更内容
                                 .
LXDIC 16.8b (公開)
・前項目(F7)で,前項目が大きい場合,開始位置の検索に時間がかかるた
 め,進捗状況表示として,砂時計とブロックアドレスの表示を追加した.
・非圧縮辞書の検索速度を高速化
 非圧縮データに特化した関数を追加し,2GB版と同等の速度を実現した.
                                  .
LXDIC Lite 16.8b (公開)
・前項目(F7)で,前項目が大きい場合,開始位置の検索に時間がかかるた
 め,進捗状況表示として,砂時計とブロックアドレスの表示を追加した.
・非圧縮辞書の検索速度を高速化
 非圧縮データに特化した関数を追加し,2GB版と同等の速度を実現した.
                                  .
LXDIC 16.4h (非公開)
・前項目(F7)で,前項目が大きい場合,開始位置の検索に時間がかかるた
 め,進捗状況表示として,砂時計とブロックアドレスの表示を追加した.
                                  .
                                  .
※前項目(F7)の表示時間
次項目は,現在の項目の終了位置から始まるので簡単だが,前項目の場合
は実際に辞書本文内を,逆方向に検索する必要があるため時間がかかる.
表示完了までには,さらに,通常の本文デコード時間が必要になる.
                                  .
小さな辞書の場合は,全く問題ないが,Wikipedia の場合は,100行当り
5秒程度の時間がかかる.400行の項目表示は,トータルで25秒程度.
                                  .
                                  .
●検索時間改善結果
                                  .
LXDICの検索時間:特殊語(上)と一般語(下)
検索語 ヒット数  EBR   12.8  16.4h  16.8   16.8b 
---------------------------------------------------------------
きよ   93    265   3.8   3.6   4.2   3.9秒 
しや    9    125   2.6   2.5   2.8   2.6  
しゆ   25    880   5.5   5.2   6.1   5.6  
しよ   38    1280   6.4   5.9   7.1   6.4  
ちよ   23    128   2.7   2.6   2.9   2.7  
じよ   16    1200   6.1   5.8   6.8   6.3  
ぢ     2    1140   6.4   6.0   7.3   6.5  
---------------------------------------------------------------
さ    200    2.9   0.9   1.0   1.1   1.0  
あい   200    2.7   0.9   0.9   1.0   0.9  
うえ   120    6.2   1.1   1.3   1.5   1.3  
おか   198    7.3   1.1   1.2   1.2   1.2  
---------------------------------------------------------------
(倍速,AC電源,4GB-SD,広辞苑5版,非圧縮辞書)
特殊語=ヒット件数は少ないが,照合件数が膨大になる検索語
 (主に,対応する拗音がある場合,照合件数が大量になる)
  ※EBRの場合は,バグのため,桁違いの検索時間になる.
一般語=ヒット件数と照合件数がほぼ同数になる検索語
                                  .
検索速度について,Ver.16.8b は,旧2GB版(12.8)とほぼ同等になる
まで改善された.
                                  .
[HP200LX/LXDIC]
 

|

2015年5月12日 (火)

LXDIC Ver.16.8

■LXDIC Ver.16.8

変更内容

●LXDIC 16.8
1.外字用のバッファー2KBを廃止し,メモリーを節約
2.外字数をスタック領域に表示するようにする.
3.外字ファイルについては,半角と全角で個別にエラー処理するよう変更
4.外字データの取得に失敗した場合は,代替データ(■)を表示するよう変更
5.半角外字の上限が低く設定されていたバグを修正
    外字数を,外字コードの上限まで拡大
6.本文内検索のヒット文字列を,小さい文字の場合も反転表示するよう変更
7.バッファー設定値が,上限32KBを越える場合にも対応する.
 
●LXDIC Lite 16.8
1.外字用のバッファー2KBを廃止し,メモリーを節約
2.(実施済)外字数表示
3.外字ファイルについては,半角と全角で個別にエラー処理するよう変更
4.外字データの取得に失敗した場合は,代替データ(■)を表示するよう変更
5.(実施済)外字数のバグ修正
6.(実施済)ヒット文字列反転表示
7.(実施済)32KB超項目対応
 
○LXDIC 16.4g (2GB版)
1.外字用のバッファー2KBを廃止し,メモリーを節約
2.外字数をスタック領域に表示するようにする.
3.外字ファイルについては,半角と全角で個別にエラー処理するよう変更
4.外字データの取得に失敗した場合は,代替データ(■)を表示するよう変更
5.半角外字の上限が低く設定されていたバグを修正
    外字数を,外字コードの上限まで拡大
6.(不採用)ヒット文字列反転表示
7.バッファー設定値が,上限32KBを越える場合にも対応する.
 
[HP200LX/LXDIC]

|

«LXDIC実験室4