アクセスカウンタ

zoom RSS テーマ「プログラミング」のブログ記事

みんなの「プログラミング」ブログ


画像認証と遊ぼう! 第8回「文字で呪え編」

2013/05/16 11:42
 前回は数字の「0」の画像からOCR辞書を作成したところで終わったにょ。
 ここから今回は他の数字を登録していくにょ。

 「0」の時と同様に「1」の画像パターンを作成するにょ。

画像


 次に処理選択から「OCR辞書の追加登録」を選択するにょ。

画像

 パラメーターはこうにょ。

画像

 「処理画像ファイル名」のところには、追加登録先の辞書ファイルのファイル名を入力するにょ。
 「登録文字」は「1」なので「1」と設定するにょ。

 実行すれば、処理結果が「処理の成否」に出るにょ。

画像

 こうやって、残りの「2」〜「9」も登録していくにょ。


 OCR辞書が完成したら、登録内容をチェックしてみるにょ。

 処理選択から「OCR辞書の種類」を選択するにょ。

画像

 辞書のファイル名を指定して実行すれば、右下の「数値結果」のところに「数」と表示されるにょ。

 処理選択から「OCR辞書の登録数」を選択するにょ。

画像

 辞書のファイル名を指定して実行すれば、右下の「数値結果」のところに「10」と表示されるにょ。これが「10」じゃないと、何か登録漏れがあるか、余計に登録してることになるにょ。

 処理選択から「OCR辞書のフォーマット」を選択するにょ。

画像

 辞書のファイル名を指定して実行すれば、登録されてる文字パターンの画像フォーマット情報が表示されるにょ。
 「数値結果」に表示されるのはビットマップのピクセル深度にょ。ここでは画像処理の結果で作られた32bitARGBの画像が登録されてるので、「32」と表示されてるにょ。

 処理選択から「OCR辞書の名前」を選択するにょ。

画像

 辞書のファイル名を指定して実行すれば、右下の「数値結果」のところに新規登録時に設定した名前が表示されるにょ。

 処理選択から「OCR辞書のイメージ」を選択するにょ。

画像

 辞書のファイル名と何番目に登録されてるかのインデックス値を指定して実行すれば、登録されてる画像パターンが表示されるにょ。また、右下の「数値結果」にその画像パターンに対応する文字が表示されるにょ。
(見てわかるように、画像パターンはマッチング精度を上げるために登録時にサイズ領域いっぱいにパターンを拡大して登録されてるにょ)


 辞書の登録内容が確認できたら、いよいよ実際の文字認識を行うにょ。

 まず、前々回『読取革命Lite』で失敗した処理結果画像を読み込んでみるにょ。

画像


 処理選択から「OCR文字列認識」を選択するにょ。

画像

 パラメーターを設定するにょ。

画像

 「処理画像ファイル名」のところには、作成した辞書ファイルを指定するにょ。

 「マッチング閾値」は、マッチング結果がこれ以上の場合はそれが正解だと判断して認識処理を終了する値をパーセントで指定するにょ。これに達するものがない場合はマッチング結果が一番大きかったものを正解とするにょ。
 当然ながら、値が小さいほど処理が軽いけど精度は低く、値が大きければ精度は高いけど認識に時間がかかるにょ。

 「回転単位角度」は傾いた文字を認識するために画像パターンを回転させる単位の角度だにょ。
 「回転ステップ数」は左右にそれぞれ何回まで回転させるかという数にょ。
 単位角度が小さくステップ数が多いほど精度の高いマッチングを行えるけど、処理に時間がかかるにょ。

 実行すれば右下の「数値結果」のところに認識結果が表示されるにょ。

画像

 ここでは正しく「6681」と認識されたにょ。

 ちなみにその前の回の処理結果画像にょ。

画像

 これも正しく「5946」と認識されたにょ。

画像

 ついでに前回「0」を取り出した画像にょ。

画像

 これも正しく「5054」と認識されたにょ。

画像


 このように画像処理ツールで最初からやるのは手間がかかるけど、このツールの開発に用いたライブラリを使って、前々回までの認証画像の加工処理と、この文字認識処理を一括して行うようなソフトを作れば、元の認証画像からダイレクトに文字認識結果を取り出すようなものを作ることも出来るにょ。

 試しにコンソールアプリで作ってみた例にょ。パラメータに未加工の元画像を与えるだけで、画面処理を行うことなく一連の画像加工や文字認識を内部で行い、結果だけを文字列として吐き出してるにょ。

画像


 ここで用いてる認識処理だと英数字以外の複雑な文字を十分扱えるまでにはなっていないけど、そのレベルの範囲内でいろいろと応用的に使うことも出来るだろうにょ。例えば英数字を独自の創作文字のフォントに置き換えて作った暗号文を翻訳するのに使ったりとか……

 とりあえず文字認識処理まで一通りやったので、反応も無いことだし、この連載は今回で終わることにするにょ。
記事へブログ気持玉 / トラックバック / コメント


画像認証と遊ぼう! 第7回「辞書で殴れ編」

2013/05/15 23:13
 前回は、文字のフォントデザインによっては活字OCRソフトとの相性でうまく認識できないものがあるというところで終わったにょ。

 そこで、今回は文字認識そのものを既製のOCRソフトを使わずに自分でやってみるというところにょ。とはいえ、市販のOCRソフトのように手間隙かけて高度な認識アルゴリズムを組み込んだりなんてことは出来ないので、ここではパターンマッチングを用いた簡易OCR機能を使うにょ。

 この方法で認識できるのは、文字のデザインが一定であり、十分に特徴的なものであり、英数字等の簡単な文字しか使われていないものだけにょ。前回、前々回と扱ってきた老舗ブログサイトの画像認証は基本的に数字のみで、文字デザインも1種類だけなので、十分にこの条件に見合ってるにょ。


 文字認識機能そのものは、これまで使ってきた画像処理の技術検証用ツールに組み込まれているので、ここではその機能で用いる文字認識のためのOCR辞書の作成を行なっていくにょ。

 件のサイトの画像認証では「0」〜「9」の数字がすべて用いられているので、この10個の数字の文字パターンを登録した辞書を作る必要があるにょ。
 登録の順番はどうでもいいのだけど、とりあえず「0」から始めるにょ。

 まず、「0」を含んだ画像認証の画像を用意するにょ。

画像

 これを前回、前々回で行ったのと同様の処理を行うと、こうなるにょ。

画像


 ここから「0」の画像だけを取り出すにょ。
 例によってPhotoshopとかペイント等を用いて手作業でやっても良いのだけど、それでは芸がないので、この画像処理ツールだけでやっていくにょ。
 最初に処理選択で「領域検出(カラーラベリング)」を選ぶにょ。

画像

 パラメータは検出対象の色が白か黒か選ぶだけにょ。

画像

 実行すれば、個々のパターンごとに色分けされるにょ。

画像

 この色分けは左側のパターンから順番に行われるにょ。


 次に処理選択で「画像選択(カラーラベル)」を選ぶにょ。

画像

 これは先に「領域検出(カラーラベリング)」を行った画像から、任意の画像を選択して取り出す処理にょ。

 パラメータを設定するにょ。

画像

 設定するのは、左から何番目のパターンを選択するのかと、選択したパターンを白か黒かどちらで塗り潰すかにょ。「白」を選択した場合は黒地に白の画像になるにょ。

 実行すればこうなるにょ。

画像

 選択した「0」のパターン以外が消え去った感じにょ。


 このままじゃバランスが悪くて落ち着かないので、「画像パターンの整頓処理」を行なっておくにょ。

画像


 次にこの「0」の傾きを直すにょ。
 処理選択で「画像の回転」を選ぶにょ。

画像

 パラメータを設定するにょ。

画像

 「回転角度」は自分で適当に感覚で見繕って設定するにょ。左方向が正、右方向が負にょ。
 「回転中心座標」は画像の左上を原点にした回転の中心座標。デフォルトでは画像全体の中心に設定されてるにょ。先に「画像パターンの整頓処理」を行った時に文字パターンはセンタリング処理が行われているので、基本的にはこのままでいいにょ。
 「補間画素を二値化する」は回転処理後にバイキュービック法による画素補間を行なっているので、中間色を廃して二値画像にしたい場合にチェックするにょ。当然ながら、元画像が二値画像以外だと意味が無いにょ。
 「背景色」は回転によって元画像に存在しない座標の画素が現れた場合、白と黒のどちらに塗り潰すかという設定。例えば横長の画像を90度回転させた場合、左右に来るのは存在しないはずの元画像の天辺より上だったり底辺より下だったりするので、それを何色にするかということにょ。

 実行すればこうにょ。

画像

 これで文字が直立したにょ。角度が間違ってた場合は「取消」を押せばやり直せるにょ。


 辞書に登録するパターンはサイズを統一しておく必要があるので、ここでは48×48のサイズにしておくにょ。
 ここでは画像全体の中央部の48×48の領域を「画像の切り出し」を用いて取り出してみるにょ。

画像


 これで辞書に登録する「0」のパターン画像が完成したので、辞書そのものを作成するにょ。他の数字は後から追加登録するにょ。

 処理選択から「OCR辞書の新規作成」を選択するにょ。

画像

 パラメータを設定するにょ。

画像

 「処理画像ファイル名」のところには、作成する辞書ファイルのファイル名を入力するにょ。拡張子は何でもいいけど、ここではオーソドックスに「dic」を使ってるにょ。
 「登録文字」は表示されてる画像パターンが意味する文字のことにょ。ここでは数字の「0」なので「0」と入力するにょ。
 「辞書の種類」は辞書が扱う文字種を区別するための数字にょ。ソースのライブラリを使って開発する場合は色々と使い道があるだろうけど、この画像処理ツール上では数字が「1」、英大文字が「2」、英小文字が「4」、記号が「8」ということにしてあるにょ。
 「辞書の名前」は複数の辞書を使い分けたりする場合の識別子にょ。別にファイル名と同じ必要はないにょ。
 「横幅」「高さ」は辞書に登録する画像のサイズにょ。表示されてる画像と合致しない場合は自動的に拡大縮小して登録されるにょ。

 実行すればまず警告のダイアログが出るので、OKを押すにょ。

画像

 結果は右下の処理結果のコーナーの「処理の成否」に出るにょ。「OK」なら無事に作成されたにょ。

画像


 長くなったので、続きは次回にょ。
記事へブログ気持玉 / トラックバック / コメント


画像認証と遊ぼう! 第6回「あの影を断て編」

2013/05/11 11:39
 ……ということで、前回の続きで同じ老舗ブログサイトの別の画像認証を読み込ませてみるにょ。

画像

 見た目には前回の画像と変わらないにょ。まずこれを前回同様に「統計フィルタリング処理(グレイ)」を使って、統計上位2つの領域を抽出するにょ。

画像


 これでどう違うかはっきりしたにょ。前回の画像とは文字と影の立場が入れ替わってるということにょ。つまり、ここの画像認証では文字の領域の大きさと影の領域の大きさの大小が一定でないということにょ。

 ま、こうやって人の目で見ながらやってると一目瞭然なんだけど、これをソフトだけで判断するにはそれなりの手段が必要だにょ。それはここでの目的では無いので割愛するけど、リクエストでもあれば記事に書いてもいいにょ。

 さて、この場合はどうやるかというのが今回の内容だにょ。

 まず、いま抽出した画像を使って、元の素材画像に「二値画像による論理マスク」の処理を実行するにょ。
 本来なら先に二値化しておくものだけど、例によって手抜きにょ。

画像


 ここでもう一度、「統計フィルタリング処理(グレイ)」を使って、統計上位2つの領域を抽出するにょ。

画像

 マスク処理によって最初の画像の上位3位以下の画素が全部白になり最大勢力になってるので、元々2位だった文字色の部分が3位に落ちて、そこだけ白くなってるにょ。

 これを「白黒反転」すればこうなるにょ。

画像


 後は前回同様に、「極小領域削除処理」で点々を除去するにょ。

画像

 そして「膨張処理」にょ。

画像

 最後に「画像パターンの整頓処理」で並べ直すにょ。

画像


 これをOCRに読み込ませればこうなるにょ。

画像

 ……ん? 「669 1」?
 全角スペースが入ってるのはともかく、「8」を「9」と認識されては失敗だにょ。

 実のところ、このブログサイトの画像処理の文字デザインとの相性か、「読取革命Lite」での認識成功率は高くないにょ。
 そこで、次回は「読取革命Lite」等のOCRソフトを使わずに文字認識を行なってみる予定にょ。
記事へブログ気持玉 / トラックバック / コメント


画像認証と遊ぼう! 第5回「網を掻い潜れ編」

2013/05/10 01:01
 この連載で用いている画像処理の技術検証用ツールはメインサイトの方に置いてあるので、自分でも試してみたいという人はこちらからダウンロードしてくれにょ。

 今回の画像を読み込んで見るにょ。

画像

 これは、とある老舗のブログサイトで使われてる画像認証の画像だにょ。
 これをこのままPanasonic製OCRソフト「読取革命Lite」に読み込ませてみるにょ。

画像

 当然ながら文字認識以前に対象の文字画像を認識できていないにょ。
(上と画像形式が異なってるのは、「読取革命Lite」ではGIF画像を読めないので変換してるだけにょ)


 ま、何から手を付けようかという素材なんだけど、一見してこのまま二値化しても意味ないことはわかるだろうにょ。色の配分によってはうまくピンポイントで閾値を見つけ出せれば奇跡的に数字が取り出せるかもしれないけど、ここの画像認証一般には使えないにょ。
 取り除く必用があるのは、網目のような背景と、散らばってる点々、それに数字の影の部分だにょ。

 ここの画像認証をいくつか見てみて気付くのは、数字の色と影の色と網目の目の部分の色は、画像によって色は違うけど、それぞれ一色で統一されてるってことにょ。網目の網はグラデーションだし、点々は色がまばらで数もそんなに多くないにょ。したがって、画像上の画素値を調べれば、数字の色と影の色と網目の目の部分の色がその他の部分の色より圧倒的に多く使われてるってことだにょ。

 処理選択から「統計フィルタリング処理(グレイ)」を選ぶにょ。

画像

 これは画像をグレイスケール化した上で画素統計を取り、条件に合わない画素を除去する処理にょ。
 パラメータを設定するにょ。

画像

 「抽出するパターン数」は統計結果から上位何個の画素領域を残すかということにょ。どうみても最大は背景の網目の目の部分になり、文字と影のいずれかが2番目と3番目になるので、それを切り分けるために2番目まで残すことにするにょ。
 「横幅の上限/下限」「高さの上限/下限」は抽出対象の画素領域の大きさだにょ。デフォルトでは上限値が画像サイズの半分になってるので、これだと網目も文字も引っ掛からないから画像サイズいっぱいに広げておくにょ。

 実行すればこうなるにょ。

画像

 右下の数値結果の部分に抽出した画素パターンの個数が出るにょ。統計結果で得られた数が設定した抽出数に足りない場合は、その数が表示されるにょ。
 これで網目の目の部分と文字の影の部分が抽出されたにょ。


 これを文字部分の抽出用のマスキングに用いるために「白黒反転」をしておくにょ。

画像

 ま、本来なら先に二値化しておく必要があるけど、白の部分以外は黒と勝手に判断してくれるので、手を抜いてるにょ。

 反転した画像は一旦保存しておくにょ。


 今度は文字部分まで含めた部分を抽出するために、素材の画像に再び「統計フィルタリング処理(グレイ)」を実行するにょ。
 今度は文字部分も含めるから「抽出するパターン数」は3個にょ。

 実行すればこうにょ。

画像


 次に処理選択から「二値画像による論理マスク」を選択するにょ。

画像

 パラメータにはさっき保存した反転画像を指定するにょ。

画像

 実行すればこうにょ。

画像

 とりあえず二値化するにょ。

画像


 うまく文字の部分が抽出出来たけど、文字と同じ画素値だった点々が残ってるので、これを除去するにょ。

 以前の回では「縮小処理」を使って背景のゴミを取ったけど、今回の文字には細い部分があるので縮小した場合に文字が切れる恐れがあるにょ。
 そこで今回は「極小領域削除処理」を用いるにょ。

画像

 パラメータを設定するにょ。

画像

 これは「削除領域の輪郭線長」で指定した長さ以下の輪郭線の長さをもつパターンをすべて削除する処理にょ。
 実行すればこうなるにょ。

画像


 このままだと文字が細くて心許ないので「膨張処理」で膨らませておくにょ。

画像


 最後に、文字の配置が乱れているので「画像パターンの整頓処理」で整頓しておくにょ。

画像

 パラメータは「パターン図形の色」だけにょ。

画像

 実行すればこんな感じにょ。

画像


 これをOCRに読み込ませればこうなるにょ。

画像

 数字が全角だったり、1000の区切りでコンマが入ったりするのは気持ち悪いので、前回同様に認識対象を「数字」「半角」にしてから読み込ませるにょ。

画像


 こんな感じで、この画像認証も無事に読むことができたにょ。

 ……と終わりたいところだけど、ここの画像認証には見た目は同じような画像なのに、上記方法では解決できないものがあるので、次回はそれについて書いてみるにょ。

(などとたいそうに書いてるけど、どういう場合に読めないかというのは記事をきちんと読んだら想像がつくかと思うにょ)
記事へブログ気持玉 / トラックバック / コメント


画像認証と遊ぼう! 第4回「しがらみを切り離せ編」

2013/04/29 21:49
 今回は前回の処理の続きだにょ。

画像

 前回はここまでやってみたけど、この段階では文字が繋がったりしてるので(この画像では比較的ちゃんと読めてるけど)OCRでは誤認識しやすいところにょ。
 そこで、今回はこれを切り離してみようと思うにょ。

 もちろん、ペイント等を使って手作業でバラせばそれはそれで良いのだけど、ここでは論理的に文字図形の構造と戦うのが目的なので、画像処理技術を用いた手順で行うにょ。

 まず、連結箇所を小さくするため、「収縮処理」を行うにょ。

 今回のパラメータはこんな感じ。何ステップも繰り返すほど収縮はしないけど、最大限に痩せさせる設定だにょ。

画像

 実行すればこうなるにょ。当然ながら、これくらいで連結が無くなったりはしないにょ。

画像


 ここから文字要素の骨組みだけを抽出するために「細線化処理」を行うにょ。

画像

 パラメータはこうにょ。

画像

 実行すればこうなるにょ。文字の連結部分が横線になってるにょ。

画像


 文字要素としてはヒゲのように突き出てる部分が不要なので、「細線先端の短縮処理」を使って除去するにょ。

画像

 パラメータとしてはこんなところにょ。あまり大きな値を入れると、本来の文字の先端部分までごっそりと削られてしまうにょ。

画像

 実行すればこうなるにょ。

画像


 連結部分の横線を除去するために「孤立水平線の削除処理」を使うにょ。

画像

 これは、横方向に一本しか線が伸びてないものは文字の要素としては不要なので除去しようというものにょ。対象が数字の時にしか使えないにょ。
 パラメータはこうにょ。

画像

 実行すればこうなるにょ。文字の連結部分がうまく切れたにょ。

画像

 連結部分の残滓がヒゲのように残ってるので、もう一度「細線先端の短縮処理」を行なっておくにょ。

画像


 このままだと文字の並びがチグハグなので、「連結パターンの分割処理」を行なって整頓するにょ。

画像

 これは画像パターンを与えられた個数に分割し、分割した個々のパターンを並べ直すという処理にょ。あらかじめ個数分に分割されてるものはその分割を利用するけど、分割されてないパターンは、強制的に等間隔で分割してしまうものにょ。

 パラメータは、分割個数とパターンの色にょ。

画像

 実行すればこのようにきれいに並ぶにょ。

画像


 相手が手書き文字を認識できるようなOCRならこのままでもいいけど、活字OCRだと線文字のままでは心許ないので、「膨張処理」を使って肉付けするにょ。

画像

 実行すればこうなるにょ。OCRがゴシック体に対応していたら、このくらいで大丈夫だろうかにょ。

画像

 これをOCRに掛けるとこうなるにょ。

画像

 相変わらず先頭の「7」は「ア」になってるけど、似たような字体の文字がある場合は日本語文字を優先するというのは、日本語OCRのデフォルトの動作としては仕方がないかにょ。
 ちなみに真ん中は英字の「O」のように見えるけど、ちゃんと数字の「0」になってるにょ。

 しかたがないので「読取革命Lite」の設定で認識対象を「数字」「半角文字」に指定して読み込ませてみるにょ。

画像

 このように文字種を指定すればきちんと半角数字で認識してくれるにょ。

記事へブログ気持玉 / トラックバック / コメント


画像認証と遊ぼう! 第3回「傾きを正せ編」

2013/04/28 19:52
 この連載で用いている画像処理の技術検証用ツールはメインサイトの方に置いてあるので、自分でも試してみたいという人はこちらからダウンロードしてくれにょ。

 今回の画像を読み込んで見るにょ。

画像

 これは、とある携帯用掲示板サイトで使われてる画像認証の画像だにょ。
 これをこのままPanasonic製OCRソフト「読取革命Lite」に読み込ませてみるにょ。文字認識以前に対象の文字画像を認識できていないにょ。

画像


 まず、このままだと画像処理の途中で文字イメージが潰れる恐れがあるので、最初に拡大しておくにょ。処理選択で「画像の拡大縮小」を選ぶにょ。

画像

 パラメータを設定するにょ。

画像

 水平方向、垂直方向の拡大率を設定するにょ。言うまでもなく1.0より大きければ拡大され、小さければ縮小されるにょ。ここでは縦横ともに4倍に拡大するにょ。「補間画素を二値化する」というのは二値画像を拡大縮小した場合、補間処理で中間色が割り当てられる画素を二値化するというオプションにょ。今は二値化画像でもないのでオプションは外しておくにょ。
 ちなみに画素補間は(この機能に限らず全般的に)バイキュービック法で行ってるにょ。ソースにはバイリニア法の処理も入ってるけど、いちいちパラメータで選択するとかも煩雑になるので、バイキュービック法で固定してるにょ。

 拡大すればこうなるにょ。

画像


 例によってこれを二値化するにょ。前回使った「分析判別法」の方が楽だし、それで二値化出来ないわけではないけど、今回の画像では閾値の微妙な違いで二値化後の文字の形状が変動するので、ここは「固定閾値」で行うにょ。

画像

 画像のオレンジの部分の輝度値(Y値)が130なので、ここでは閾値として160を設定するにょ。

 実行すればこうなるにょ。

画像


 一般の文字画像とは白黒が逆転してるので、「白黒反転」で反転するにょ。

画像

 パラメータは以下のとおりにょ。

画像

 ここで自動判定のオプションがあるのは、画像上の白黒それぞれの画素の割合から反転の必要性を判定して反転処理を行うというものにょ。今は判別の必要なく無条件に反転したいので、このオプションは外しておいて構わないにょ。
 自動判定を行う場合は、目的とする本来の文字色である黒を指定しておくにょ。ここが白になってると反転処理は行われないにょ。

 実行するとこうなるにょ。

画像

 これをOCRに掛けてみるにょ。

画像

 これではまだ文字認識出来ないにょ。


 どうもOCRソフトでは文字列の画像ではなく、単に斜めに傾いた画像パターンとしか認識されてない様子にょ。
 そこで、この画像の傾きを直すにょ。

 処理選択で「画像パターンの水平化処理」を選ぶにょ。

画像

 パラメータは水平化する図形色の選択にょ。こういう白か黒かという選択のある処理は処理対象として二値化画像を前提にしてるにょ。

画像

 実行すればこうなるにょ。

画像

 これをOCRに掛けてみるにょ。

画像

 どうにか文字認識されるようにはなったけど、先頭の「7」が「ア」になってたりするにょ。

 この段階では文字画像が繋がってたりして、OCRには過酷かと思えるので、次回はここからもう少し処理を進めてみるにょ。
記事へブログ気持玉 / トラックバック / コメント


画像認証と遊ぼう! 第2回「邪魔者の始末編」

2013/04/25 14:51
 今回から実践編にょ。

 この連載で用いている画像処理の技術検証用ツールはメインサイトの方に置いてあるので、自分でも試してみたいという人はこちらからダウンロードしてくれにょ。
 ただし、使用説明とかは無いから、この連載記事がその代わりだと考えるにょ。もっとも、ここでは使わない機能とかもいっぱいあるとは思うけどにょ。

 今回の画像を読み込んで見るにょ。

画像

 これは、とある大手プロバイダの運営するブログサイトで使われてる画像認証の画像だにょ。
 ま、これをこのまま前回と同じPanasonic製OCRソフト「読取革命Lite」に読み込ませてみるにょ。人目にはどう読んだらこういう結果になるのだろうかというところだけど、そこが画像認証の存在意義なのだから仕方がないにょ。

画像


 まず最初に前回やった「二値化処理(分析判別法)」を行なっておくにょ。

画像

 ま、今回は二値化しただけでちゃんとOCRで読めたりなんかはしないにょ。

画像


 ここで目立つのは画像に付いてる外枠なので、これを取っ払ってみるにょ。こんなものはペイントなりその他の画像編集ソフトでも構わないけど、いちいちソフト間でデータのやり取りとかするのも面倒なので、ここではこのツールに付いてる「画像の切り出し」機能を使うにょ。
 これは表示されてる画像から一部を切り出す機能にょ。

画像

 処理選択で「画像の切り出し」を選んだらパラメータを設定するにょ。デフォルトでは表示画像をそのまま切り出すような値が設定されてるにょ。

画像

 ここでは除去する外枠は幅1ドットなので、これ以外の領域を切り出すように領域の始点(左端と上端)とサイズ(横幅と高さ)を指定するにょ。また、処理の前後で画像のサイズや文字の表示位置が変わらないように、枠の部分を余白に置き換えるように、左右及び上下の余白を1ドットずつ入れておくにょ。

 実行すれば外枠が取れてこんな感じになるにょ。

画像

 これをOCRに読み込ませてみても、まだダメだにょ。

画像


 こうなると問題なのは文字の周囲に散らばってるゴミのような小さな点々だにょ。こういう細かいものを除去する方法はいくつかあるけど、文字の大きさが十分に大きいので、「収縮処理」で除去することにするにょ。

画像

 パラメータは2つ設定するにょ。

画像

 処理ステップ数は処理を何回繰り返すかの値。点々は小さいのでそんなに収縮を繰り返す必要はないから、ここは1回で十分にょ。周辺画素数の閾値というのは、画像上のある黒い画素(ドット)に対して、その周囲8画素のうちの何個が白なら白に変えるかという値にょ。値が小さいほど画像は急激にやせ細るにょ。

 実行すればこんな感じで点々が消えるにょ。

画像


 これで十分な感じもするけど、文字によっては収縮によってバランスが変化してしまうことがあるので、今度は「膨張処理」によって元に戻すにょ。

画像

 パラメータは同様にょ。実のところ「収縮処理」と「膨張処理」は黒の画素を白に変える処理か、逆に白の画素を黒に変える処理かの違いにすぎないにょ。

画像

 実行すればこんな感じにょ。

画像


 もっとも、収縮した画像を膨張させても完全に元に戻るわけじゃなく、文字の幅やバランスが戻る程度という感じにょ。
 そこで、もう少し元の画像に近付けるために、「収縮処理」を行う前の画像と画素ごとの論理積をとって、「膨張処理」で太りすぎた部分を排除しておくにょ。

画像

 パラメータとしては「収縮処理」の前の画像ファイル(もちろん、事前に保存しておくことが必要)と、論理処理の開始位置、論理処理の対象色にょ。今は元の画像も論理積を掛ける画像も同じ大きさで、文字の位置も同じなので、始点は(0, 0)のままでいいにょ。処理対象である文字は黒なので、対象色は黒だにょ。

画像

 結果はこんな感じにょ。「収縮処理」で痩せすぎた部分までは戻らないけど、大体は元の雰囲気に戻ってるかにょ。

画像

 これをOCRで読み込んでみるとこんな感じにょ。

画像

 「9」だけ全角だったりはするけど、ちゃんと文字が認識されるようになってるにょ。

 今回はここまでにょ。
 これくらいまでなら一般的な定番の画像処理技術で何とかなったりはしてるのだけど、もっと頭を使わないとなんともならない画像認証は多いにょ。そんなものもボチボチと扱っていく予定にょ。
記事へブログ気持玉 / トラックバック / コメント


画像認証と遊ぼう! 第1回「灰色の基礎編」

2013/04/17 22:11
 まずは画像認証の料理に用いるソフトにょ。「Visual C++ 2008 Express Edition」を用いて作った画像処理の技術検証用のツールだにょ。画像処理そのものは機能グループごとにクラスモジュール化されていて、それをフォームアプリのGUIから呼び出して処理結果の表示等を行ってるにょ。

 開発及び動作確認はWindows XPの32bit環境で行ってるにょ。この検証用ツールの実行ファイルはあすかの個人サイトからダウンロードできるので、興味ある人は記事の確認などを行なってくれにょ。
(個人サイトのサイドメニューの「あすか研究所」に本連載の記事一覧と画像ツールのダウンロードがあるにょ)

 ただし、ソースファイルは無償では配布しないので、欲しい人があれば実行ファイルのアーカイブに同梱のテキストを参照に申し込んでくれにょ。

画像


 ということで、普通に起動させた画面にょ。動作には.NET Framework 3.5SP1の環境が必要だにょ。ま、普通にWindows Updateとかしてたら入ってると思うけど、入ってない場合は各自でインストールしてくれにょ。
 このツール自体はインストール不要なので、アーカイブを解凍してエクスプローラからクリックするなりして起動してみてくれにょ。実行ファイル名が「Test.exe」とかいうのは、わざわざ名前を考える程のものではないからだけど、他と紛らわしいとかいう場合は好きにリネームでもしてくれにょ。

 さて、今回の画像認証ネタの画像を読み込むにょ。

画像


 一番上のテキストボックスにフルパスのファイル名を入力するか、その右の「参照」ボタンを押してファイルダイアログを開いてファイルを指定するかしてから、「表示」というボタンを押せば、目的の画像が読み込まれて表示されるにょ。
 あるいは、エクスプローラ等から直接ファイルをドラッグ&ドロップで検証用ツールのウインドウ内に放り込んでも同じにょ。

 画像を読み込んだらその右の方にいろいろと情報が表示されるけど、「Width」が横幅のドット数、「Height」が高さのドット数という他は、.NET Framework を用いた画像プログラミングに有用な情報というだけで、プログラミングとかしないなら気にしなくていいにょ。

 表示された画像上でマウスを左クリックすると、右側の「PixcelColor」の枠内にそのドットのピクセル値が表示されるにょ。
 今回読み込んだのは明暗の2階調のグレー画像だけど、図で表示されてるのは文字の部分の濃いグレーの値にょ。デフォルトでは「RGB」で表示されてて、グレーだから各成分の値は同じになってるにょ。

画像


 画像処理を行う場合はRGB値よりも輝度値を知りたい場合が多いので、そういう場合はラジオボタンの「YUV」を選択すると、3つの値の左端に256階調の輝度値(Y)が表示されるにょ。

画像


 同様に文字以外の薄いグレーの部分をクリックした時の値にょ。

画像


 ここでグレーの画像を、OCRで読みやすい白黒のくっきりした画像に変換するために二値化の処理を行うにょ。ここでは画像表示部分の下にある処理選択のコンボボックス(ドロップダウンリスト)から「二値化(固定閾値)」を選択するにょ。

画像


 そして入力パラメータとして閾値を設定するにょ。ここではデフォルト値のままだけど、上で見た明暗2箇所の輝度値の間の値なら何でもいいにょ。

画像


 それから「実行」ボタンを押せば、くっきりとした二値化画像に変換されるにょ。

画像


 変換結果の画像は画像形式を選択して「保存」ボタンを押せば、保存用のファイルダイアログを開いて保存することが出来るにょ。

画像


 上では「二値化(固定閾値)」の処理を用いて自分で閾値を指定して二値化したけど、例のような明暗の明確な画像なら「二値化(判別分析法)」を用いれば、パラメータの設定をしなくても自動的に閾値を判断して処理することが出来るにょ。

画像


 変換した結果をOCRで読ませてみるにょ。使っているのはCanonのプリンタ複合機に付属していた「読取革命Lite」とかいうPanasonic製のソフトにょ。「4」だけ半角で後が全角だとか、文字間にスペースが入ってるという細かいとこを除けば、こんなところかにょ。

画像


 もっとも、今回のような明暗の明確な画像だとこのOCRソフトでもちゃんと読めたりするので、わざわざ二値化処理を行ったりする必要がなかったりするにょ。

画像


 今回は基礎編ということで極簡単なものを扱ってみたけど、次回からは実践編で、そのままではOCRソフトが読み取れないような画像を扱うことにするにょ。

記事へブログ気持玉 / トラックバック / コメント


画像認証と遊ぼう! 第0回「プロローグ」

2013/04/17 21:37
 画像処理というのはいろいろなところで使われていて、指紋や網膜を使った生体認証とか、あるいは一眼レフカメラで人の顔に自動的にフォーカスを合わせるとか、あるいは笑顔の瞬間に自動的にシャッターを切るとか、あるいは自動車が接近物を自動検知したりとか、昨今は高度なものが実用化されたりしてるにょ。

 ま、そんな高度なものじゃなくても、デジカメで取った写真を漫画風のベタ絵に変換したり、歪んで撮影した書類をきちんとまっすぐに補正したりとかいうようなスマホのアプリでやってる程度のものは、実はそんな技術的に大したことやってる訳じゃなくて、アイデアもののレベルだったりするけど、そんなふうに日常的に欠かせない技術になってるものだにょ。

 さて、ウェブサイトの登録ページとかに使われてる画像認証というのは、ソフトが自動アクセスして機械的に登録するのを避け、人間がちゃんとその手で登録するようにさせるというのを目的にしているにょ。
 初期のものは単純に「画像に書かれた文字ならソフトが自動的に読めたりはしないだろう」ってだけのものだったのだけど、OCR技術の発達で、単純に文字を画像化しただけなら簡単に読み取れるようになってしまったにょ。そこで現在の画像認証は単にOCRのソフトを通しただけじゃ読み取れないというのを目指してるにょ。
 もっとも、そこはそのサイト登録の重要さとか、運営者の思想によって様々だったりするにょ。

 ここではそんな画像認証を画像処理を使って読み取れるようにしてみようという暇潰しの不定期連載企画だにょ。
 とは言え、技術的にどんな画像認証でも読めるってわけじゃないので、そのへんは勘弁して欲しいにょ。

 この連載では基本的に文字の読み取りそのものは既成のOCRソフトを利用するのを前提で、画像認証の文字をOCRで読める形にしてみることを目標とするけど、OCRソフトも得手不得手があったりするから、独自の簡易OCRを用いる場合もあるにょ。

 次回からは独自の画像処理の技術検証用ツールを用いて、画像認証の料理の仕方を紹介していくにょ。
記事へブログ気持玉 / トラックバック / コメント


Twitterクライアントを作るにょ

2010/09/14 21:48
 ま、何とかOAuthの認証は動いたので、ぼちぼちとクライアントソフトを作るにょ。
 まずはタイムライン情報のクラスと、そのコレクションのクラスを作るにょ。Twitter APIのレスポンスデータはAPI毎に違うから、本来はそれぞれ別のクラスを作るべきだろうけど、面倒なので全部共通で使うにょ。すべてのデータを使うとか言うわけじゃないから、無い項目は空で構わないにょ。タイムラインのデータも、別に発言者のプロフィール情報まで必要なんか無いから、要るものだけ集めるにょ。
 コレクションクラスはArrayListクラスから派生させるにょ。SortメソッドとIndexOfメソッドをoverrideして、タイムラインクラスのステータスIDの値でソートしたり、インデックス値を得られるようにするにょ。

 タイムラインの取得とか、キーワードでの発言検索とかGET系のAPIはとりあえず動いているから、今度はPOST系のAPIを動かしてみるにょ。POST系のAPIといえば、基本はステータスの更新(発言、つぶやき)だろうにょ……と投げてみたけど、なぜかエラーになって受け付けてくれないにょ。
 どうも、発言本文をHTMLエンコードしてる部分が、.NETのHttpUtility.HtmlEncodeではダメみたいにょ。とりあえず、この部分だけネットからソースを拾って来て何とか通してみたにょ。

 とりあえず基礎ができたところでGUIを整えていくにょ。
 フォームの上部にPictureBoxとTextBoxを置き、ステータスの詳細を表示するにょ。タイムラインの情報にユーザーのアイコン画像のURLが含まれているのだけど、.NETのPictureBoxは画像のURLを渡せばそれを勝手に表示してくれるから、画像のダウンロードとか意識せずにアイコンを表示することができるにょ。
 ステータスの本文はユーザー名とか発言時刻とかクライアント情報とかと一緒に編集してTextBoxに表示してるのだけど、このへんはまだまだ暫定的で素朴にょ。TextBoxを使ってるのはスクロールバーが使えるという面もあるけど、何よりメンテナンスやテスト用の標示に流用できるからだにょ。何しろ、Twitter APIのレスポンスデータの構造は実際にAPIを投げて返ってきたのを直接調べるしか無いから、それをそのまま表示させるのにも使えるからにょ。

 フォームの下部にはタブコントロールを置くにょ。とりあえず現状では「タイムライン」と「検索」のタブを置き、それぞれにListBoxとTextBox、ボタンを配置するにょ。
 ListBoxは冒頭で述べたタイムラインのコレクションを一覧表示するのに使うにょ。そこらのクライアントソフトのように縮小アイコンを表示したり、新着や返信・RT等のマークを付けるならListControlにすべきなんだろうけど、そこまでやると処理が重そうに思うし、ま、将来的な課題かにょ。
 TextBoxとボタンはステータスの更新とか、タイムラインの取得、検索の実行に使うにょ。タイムラインの取得は本来なら自動運転だけど、まだそこまでは作ってないから、今のところは手動で取得するにょ。

 ダイレクトメッセージとかReplyやReTweetなど、まだまだ対応してない基本機能があるし、フォローの管理とか自動運転の機能も必要だし、最終的には何パターン化のボット機能も備えたいにょ。
 ま、ぼちぼちと作っていくかにょ。
記事へブログ気持玉 / トラックバック / コメント


タイトル 日 時
TwitterのOAuth認証は複雑奇怪にょ
 「Visual C#」でTwitterクライアントを作ろうと思ったのだけど、ふと気付いたのはTwitterのBASIC認証は8月いっぱいで廃止されるということだにょ。以降はOAuth(またはxAuth)による認証しか使えなくなるにょ。  BASIC認証なら.NETのライブラリが対応してるからとくに意識しなくても構わないのだけど、OAuthはそうはいかないにょ。自分で認証に対応したコードを書かないといけないにょ。しかし、Twitter APIの仕様書を見ても、OAuth認証のためのアクセストー... ...続きを見る

ブログ気持玉 / トラックバック / コメント

2010/08/26 23:42
Visual C++ 2008でWin32APIアプリケーションを作るにょ
 2005から配布されてる「Visual C++ Express Edition」ではWindowsアプリは「.NET Framework」を利用したWindowsフォームアプリケーションで開発するのが一般的だにょ。製品版に付いてくるMFCが付いていないので、Win32APIだけでWindowsアプリを開発するのはかなり困難だにょ。(OKWaveの質問とか見てたら意外に多い、初心者がC言語でWindowsアプリを作ってる環境のようなものかにょ)  でも、MFCが無いからといってWin32API... ...続きを見る

なるほど(納得、参考になった、ヘー) ブログ気持玉 2 / トラックバック 0 / コメント 0

2010/08/17 22:45
PHPでファイルを用いて静的な変数を扱うにょ
 PHPを使っていて、意外と不自由を感じるのはサイトのアクセスすべてを通じたグローバルな静的変数が持てないということだにょ。ま、1アクセスが1プロセスだと考えればプロセスを越えた変数を持てないというのは当然の話だけど、なまじセッション変数などという、それを越えて使えるものがあるし、他の面では初心者向けの親切な機能が目立つから、すごくストレス感を感じるにょ。  ま、データベースを使った処理をしてるソフトなら専用のテーブルを作って保存するという方法もあるけど、データベースを使わないソフトだと、その... ...続きを見る

ブログ気持玉 / トラックバック / コメント

2010/08/11 22:34
VC#でBottunクリックとショートカットキーで同一のイベントハンドラを使う方法にょ
 これも例によってOKWaveで質問にあったものだけど、Visual C#でボタンコントロールにショートカットキーを割り当て、そのKeyDownイベントをボタンのClickイベントと同じイベントハンドラで処理したいという内容だにょ。  ショートカットキーの扱い方はともかく、イベントハンドラの方はそんなことしなくてもふつうにそれぞれのを作って、共通の処理を記述したメソッドを呼び出せばいいのだけど、自分で処理を考えられないような初心者に限って、そんな変なとこに執着するのがよくわからないにょ。 ... ...続きを見る

ブログ気持玉 / トラックバック / コメント

2010/08/01 23:09
C言語の配列の末尾に新たな要素を追加するにょ
 いつものようにOKWaveの質問に出て来たネタにょ。  質問ではOpenCVだったけど、PHPのようなスクリプト系の言語や、.NETのC#やC++/CLIとかでも、最近の高級言語では任意の配列の末尾に新たな要素を追加できる機能があるにょ。でも、C言語にそんなものを期待しても無駄にょ。Cの配列は宣言した時点でサイズが固定され、それを越えて要素を追加することはできないにょ。(ま、配列のサイズよりも有効な配列要素の数が少なくて配列の後ろが空きになってるような場合は別だけど、ここでは配列のサイズいっ... ...続きを見る

なるほど(納得、参考になった、ヘー) ブログ気持玉 3 / トラックバック 0 / コメント 0

2010/07/28 22:55
動的生成したPictureBoxを使ったVC#のプログラムにょ
 これも、OKWaveにあった質問から作ってみたプログラムにょ。  質問内容はあまりよくわからないけど、VC#でトランプゲームを作ってるけど、動的生成したPictureBoxをクリックした時の処理をどうすれば良いかわからないというようなものだったかにょ。 ...続きを見る

ブログ気持玉 / トラックバック / コメント

2010/07/22 23:11
scanf系の関数ってそんなに好きかにょ?
 例によってOKWaveの話にょ。  一口にプログラムの質問と言ったっていろいろなタイプがあるわけで、プログラムの組み方自体がわからないという初心者さんの質問もあれば、非常に特殊なことをしていて参考する情報が無いから困ってるというマニアックな質問もあるにょ。中には学校の授業の課題を問題文そのまま載せて丸投げというものも珍しくも無いけど、そんなのに素直に答えてやるかどうかというのは暇さ加減と気分しだいにょ。 ...続きを見る

ブログ気持玉 / トラックバック / コメント

2010/07/15 15:30
C++で子供を作るにょ
 例によってOKWaveだけど、「子供をC++で作りたいから、ソースを教えろ」って厨房な質問にょ。それ以上の具体的な情報は何も無いふざけた質問なのでまともに取り合う必要は無いのだけど、「子供を作る」ということをプログラムで表現するにはどうするかというところに興味を覚えたのでふざけ半分で作ってみたにょ。 ...続きを見る

ブログ気持玉 / トラックバック / コメント

2010/06/24 22:12
「C#」でCSVファイルを読み込むにょ
 VBなんかだとExcelのシートに直接アクセスしてデータを入出力するとかいう手法もあるだろうけど、一般的なスプレッドシート型のデータをプログラムから扱う場合に用いられるのはCSV形式のデータだにょ。  ところが、CSVファイルを読み書きするだなんて需要がありそうな機能は、.NETでも付いてないにょ。したがって、CSVファイルを読み込んで配列や構造体などのデータ構造として取り込む処理は自分で書くというのが一般的だにょ。 ...続きを見る

ブログ気持玉 0 / トラックバック 0 / コメント 3

2010/06/09 23:58
指定範囲でユニークな乱数結果を返す「C#」のクラスを作ったにょ
 指定範囲でユニークな乱数結果を返す「C#」プログラミング用のクラスを作ったにょ。OKWaveの教えて君だけに提供するのももったいないので、回答に書いたのより少し機能アップしたのをここに載せるにょ。ま、別に目新しい独創的なものというわけでもないけど、いちいち処理を考えるのが面倒とか言う場合には利用してくれにょ。(ただし、業務用途で用いる場合は1件当たりAmazonギフトカード1000円を要求するにょ)) ...続きを見る

ナイス ブログ気持玉 1 / トラックバック 0 / コメント 0

2010/06/07 23:53
PHPを使うにょ
 小遣い稼ぎ先で携帯用のサイトを作るにょ。サイトの中身は全部PHPとMySQLを使って動的生成するにょ。  で、初めてPHPというか、スクリプト系のプログラム言語とかいうものを使ってみたのだけど、なんか大雑把な言語だにょ。ま、C/C++みたいな低レベル高級言語と比べるのが間違いだろうけど、C/C++じゃ地味に自分でコードを書かなければいけないような処理も標準の関数でサポートされてたりするのだけど、逆にいえば細かな処理でも何重も呼び出しが掛るような構造になってるから、自分で低レベルの処理を組んで... ...続きを見る

ブログ気持玉 / トラックバック / コメント

2010/06/04 23:40
Visual Studio 2010 ヘルプライブラリをダウンロードするにょ
 以前の日記で、「Visual Studio 2010 Express」にはMSDNライブラリは無いのかとか書いたら、2010ではヘルプビュアーの機能が従来のMSDNライブラリの機能にとってかわってるという指摘をいただいたにょ。  Expressではデフォルトではヘルプビュアーはオンラインのライブラリを読むようになってるのだけど、オフラインにダウンロードすることも可能だと言うことなので、ダウンロードすることにするにょ。 ...続きを見る

ブログ気持玉 0 / トラックバック 0 / コメント 1

2010/05/21 23:54
Visual Studio 2008 Express をインストールしたにょ
 この前、「Visual Studio 2010 Express」をインストールしたわけだけど、どうも動作が安定せずにコードを入力しようとしただけで異常終了してしまうとかいうのが頻発するにょ。  ぎりぎり動作条件はクリアしてるはずなんだけど、ビデオメモリに使われてる分とか、他のアプリが立ち上がってる分を数えるとメモリが足りないのかにょ? でも、ハード的に最大限のメモリを積んでるから、これ以上は増やせないにょ。  恐る恐る気を遣って使うにしても、立ち上がりの時間も結構掛るからストレスいっぱいに... ...続きを見る

驚いた ブログ気持玉 4 / トラックバック 0 / コメント 0

2010/05/16 23:50
オブジェクト指向を理解できない老害は引退しろにょ
 久しぶりに酷いコラムを見たにょ。 ...続きを見る

ブログ気持玉 / トラックバック / コメント

2010/05/13 23:46
Visual Studio 2010 Expressをインストールしたにょ
 最近、OKWaveとかでプログラミングの質問とかに答えてるんだけど、一般的なC/C++のことなら良いんだけど、.NET環境とかVC#とかの質問になると、自宅PCに入ってるVisual C++.NET 2003の環境じゃ動作確認とか出来ないものも多いにょ。そこで、Visual Studio 2008 Expressでもインストールしようかと思ってたら、最新版のVisual Studio 2010 Expressが出たので、これをインストールすることにしたにょ。 ...続きを見る

ブログ気持玉 0 / トラックバック 0 / コメント 3

2010/05/04 22:54
PHPの開発環境を設定したにょ
 小遣い稼ぎ先で、いきなしモバイル用のランキングサイトを作れとか言うにょ。しかも、C言語環境のCGIを使ったサーバーを設営したり、そもそもC言語で作ったソースをメンテナンス出来る人間は他にいないからPHPで作れとか言いやがるにょ。 ...続きを見る

ブログ気持玉 / トラックバック / コメント

2010/03/28 23:04
「Visual Studio 2008」のスニペットにょ
 暇つぶしにOKetter見てたら、「Visual C++ 2008」にスニペットが無いのかという質問があったにょ。スニペットって何かにょ?……と思ったら、プログラム言語の構文入力とかを手助けしてくれる機能みたいにょ。  ま、スニペットなんて言葉は初めて聞いたぐらいだから「VC++ 2008」にはそんなの無いだろうにょ……と思ったけど、XMLの編集用には付いてるみたいにょ。ま、通常のプログラミング用のスニペットは付いてないにょ。  たまたま「Visual C# 2008」も開いていたので見て... ...続きを見る

ブログ気持玉 / トラックバック / コメント

2010/03/26 23:57
なんちゃってOCRを作るにょ
 小遣い稼ぎ先でOCRソフトを作れとか言われたけど、そんなの月給50万ぐらい貰ってる人が何年も研究して作るものだから、それぐらい金を出してくれないと作れないにょ。ま、どんな文字文書でも対応できる本格的なものは無理だけど、英字だけとか数字だけとかで字体がきっちり固定してるものなら、それなりのものは作れるにょ。 ...続きを見る

ブログ気持玉 / トラックバック / コメント

2010/03/10 22:48
Unicodeは面倒にょ
 パソコンの文字コードというと、MS-DOSの時代から長らくシフトJISが使われてきたにょ。これは1文字7ビットのASCIIコードに、ASCIIでは未使用の8ビット目を用いたコードを2個セットで組み合わせ、そこにJISコードをシフトして日本語文字を当て嵌めたものだにょ。日本語部分は2バイトセットだけど、8ビット目の有無で1バイト文字と2バイト文字を区別するようになってて、基本的には1バイトを1文字として扱うコード処理系になってるにょ。  WindowsではWindows95ぐらいからシステム内... ...続きを見る

ブログ気持玉 / トラックバック / コメント

2010/03/06 22:39
ソフトの品質の話にょ
 PS3でネットワーク障害が発生したって話にょ。タイミング的に閏年処理のバグだと思ってたけど、やっぱりそんな感じかにょ。ただ、アプリレベルのバグじゃなく、もっと基本的なファームウェア部分辺りのバグみたいだから、問題は深刻だにょ。  去年か一昨年にもNTTのルーターの閏年処理が原因で大規模な障害が起こってたように思うけど、こんな基礎的なところで障害起こすシステムっていったいどんなアホが設計してるのだろうかにょ? ...続きを見る

ブログ気持玉 / トラックバック / コメント

2010/03/02 22:14
『VC++ 2008』でFormデザイナが開かないにょ
 『Visual C++ 2008 Express Edition』で何か新しいものを作ろうと、とりあえず簡単な動作確認のための雛型を作ってみることにしたにょ。  とりあえずユーザーIDとパスワードを設定するようにして、その設定用ダイアログを新たなFormで作ろうとしたにょ。ま、基本的にはMFC環境のダイアログエディタみたいなものかと思って作り始めたにょ。 ...続きを見る

なるほど(納得、参考になった、ヘー) ブログ気持玉 4 / トラックバック 0 / コメント 1

2010/01/22 21:12
『良い子のためのソフト開発のお勉強』を始めたにょ
『良い子のためのソフト開発のお勉強』を始めたにょ  ちょっとネタを思いついたので、新しいブログを始めたにょ。どこか新しいブログサービスでも探そうかと思ったけど、ユーザーアカウントの登録作業とか面倒くさいので、数年前から放置しっぱなしで、他のブログやサイトからのリンクも外した状態になってたMicrosoftのブログを再利用するにょ。 ...続きを見る

ブログ気持玉 / トラックバック / コメント

2010/01/12 22:38
「Internet Cache Salvage 0.30」が公開されたにょ
 年が明けたので、昨年末にVectorに登録した「Internet Cache Salvage 0.30」が公開されてるにょ。ま、更新内容は年末の日記に書いたとおりにょ。ポップアップメニューを付けたのと、「クリップボードにコピー」の機能を追加したから、エクスプローラ使いの人とかには優しくなったかにょ。あすかはMS-DOS時代からの習慣から、昔ながらのインタフェースのファイラーソフトを愛用してるから、エクスプローラはめったに使わないにょ。 ...続きを見る

ブログ気持玉 / トラックバック / コメント

2010/01/06 22:34
namespaceと楕円の円弧の話にょ
 MFCを使ってる限りではVC++でも「namespace」なんかは使わずに済むのだけど、CLR環境だと逃れることはできないにょ。ま、「namespace」も既存の変数等のスコープの概念の延長上だから見よう見まねでも何とかなるのだけど、ちゃんとした解説とか見てみようかにょ……と思って昔買った手元のC++の本を読んでみたのだけど、「namespace」なんてどこにも載ってないにょ。  調べてみたら、C++の標準規格に「namespace」が追加されたのはそんなに古い話じゃないから、そのC++の本... ...続きを見る

ブログ気持玉 / トラックバック / コメント

2009/12/30 23:03
「Internet Cache Salvage」を改造したにょ
 最近は時間が無いからあんまし自宅でソフトをいじってる暇はないのだけど、とりあえず欲しい機能があったから、「Internet Cache Salvage」を改造してみたにょ。 ...続きを見る

ブログ気持玉 / トラックバック / コメント

2009/12/26 22:36
「VC++ 2008」でBMP画像を保存すると32bit形式になってしまうにょ
 相変わらず「Visual C++ 2008 Express Edition」で画像処理のソフトを作ってるにょ。これの開発環境は標準のBitmapクラスを使えば、サポートしてるどの種類の画像ファイルも意識せずに読み書き出来るし、ピクセルフォーマットが24bitか32bitかとかは自分が使いたい方を指定したらその通りに展開してくれるから楽なのだけど、意外なところに落とし穴があったにょ。  これで保存したBMPファイルを既存のソフトで読み込ませようとしたら、うんともすんとも言わないにょ。何かと思っ... ...続きを見る

ブログ気持玉 / トラックバック / コメント

2009/12/08 22:57
『iP!』で紹介されたにょ
 今月の『iP!』とかいうインターネットだか何かの雑誌に「Internet Cache Salvage」が紹介されてるにょ。  ……ということで、見本誌をもらったにょ。ま、紹介といっても白黒ページにちょこっと載ってるだけだけど、物理的に形のある媒体で紹介されてるのは嬉しいにょ。雑誌で自作ソフトが紹介されたのは「Win青海」以来かにょ。ま、ベクターで公開してるソフトの中で全然相手にされてないのは「FlatColor」だけで、他のソフトは最低1回ぐらいはどこかの雑誌で紹介してもらってるんだけど……... ...続きを見る

ブログ気持玉 / トラックバック / コメント

2009/11/30 22:41
「Visual C++ 2008 Express Edition」を使ってみたにょ
 ちょっと小遣い稼ぎに出た先でソフトを作ろうとしたら、開発環境とか無いとか言いやがるから、せめて「Microsoft Visual C++ 2008」の「Standard Edition」でも買えと言ったのだけど、やることもないのでとりあえず「Express Edition」を落としていじってみることにしたにょ。 ...続きを見る

ブログ気持玉 / トラックバック / コメント

2009/11/19 23:43
ゲームソフトの構想と『Internet Cache Salvage』の次の課題にょ
 シャワーを浴びながら、ふとゲームソフトの開発を思い付いたにょ。  ま、もちろん市販のパッケージソフトみたいな手間隙掛かるものは考えてなくて、仕事の息抜きにでも出来るような、カジュアルゲームだにょ。ま、あすかの作ったことのあるゲームソフトなんて、『Win青海』とその前身である『SX青海』『FM青海』を除けば、昔、『電脳倶楽部』に小ネタソフトとして載った『SX-MATOMOくん』とかいうマインスイーパーみたいなゲームだけだから、たいしたものは作れないにょ。 ...続きを見る

ブログ気持玉 / トラックバック / コメント

2009/10/26 23:36
「Internet Cache Salvage」が『窓の杜』で紹介されたにょ
 先日更新した「Internet Cache Salvage」Ver.0.20だけど、無事にVectorで公開されたみたいにょ。 ...続きを見る

ブログ気持玉 / トラックバック / コメント

2009/10/21 21:09
「Internet Cache Salvage」を更新したにょ
 うちのSleipnirでは、この日記のトップページをはじめとするいくつかのページのタブはずっと開いたままになってるのだけど、ふと見たら、この日記の右のサイドスペースに何も表示されなくなってたにょ。  更新を掛けても変わらないし、新しいタブで開き直しても同じだにょ。個別記事を開いたらちゃんと表示されてるし、ブラウザエンジンをGeckoに切り替えたらトップページも正常になってるにょ。  どうも問題はTridentのキャッシュみたいだからインターネットオプションでキャッシュデータを削除してみたら... ...続きを見る

ブログ気持玉 / トラックバック / コメント

2009/10/14 23:37
「Internet Cache Salvage」の使い方・実践編にょ
 今日は「Internet Cache Salvage」の使い方を書くにょ。……といっても、基本的な使い方はマニュアルに書いてあるので、実際にどういう目的の時にどう使うかというのを、一例を挙げて記しておくにょ。 ...続きを見る

ブログ気持玉 / トラックバック / コメント

2009/08/30 22:12
自作ソフトの紹介ページを作ったにょ
 今年から日記をこちらに移したので更新する機会が少なくなったメインサイトに自作ソフトの紹介ページ【あすかソフトウェア研究所】を新設したにょ。  サイトのサイドメニューの「あすか研究所」とあるリンクから入れるにょ。 ...続きを見る

ブログ気持玉 / トラックバック / コメント

2009/08/26 18:55
「Internet Cache Salvage 0.10」が公開されたにょ
 先日、ベクターに登録した新作ソフト「Internet Cache Salvage 0.10」が公開されたにょ。何をするソフトかは先日の日記でも書いたように、Microsoft Internet Explorerのキャッシュファイルから任意のデータをサルベージするためのツールだにょ。 ...続きを見る

ブログ気持玉 / トラックバック / コメント

2009/08/19 05:12
インストーラーのレジストリ操作は難しいにょ
 この前作ったソフトのインストーラーを作るにょ。あすかの使ってる開発環境であるVC++ .NET 2003のStandard Editionにはインストーラー作成ツールは付いてないので、ネットから探してきた「簡単インストーラ」(nobukichi氏作)とかいうツールを使うにょ。 ...続きを見る

ブログ気持玉 / トラックバック / コメント

2009/08/11 23:55
IEのキャッシュを漁るソフトを作ったにょ
 この前から作ってたソフトだけど、とりあえず目的とした機能を実現するというところまで行ったので、とりあえず完成かにょ。 ...続きを見る

ブログ気持玉 / トラックバック / コメント

2009/08/07 23:50
新作ソフトの開発中にょ
 少し前から新しいソフトを開発中にょ。プログラミングに没頭すると、他のことがぜんぜん手に付かないにょ。  うちの開発環境はVC++の.NET 2003のStandard Editionで、Standard Editionが手軽な値段だった頃の製品にょ。最近の2005とか2008はExpress Editionを無償で配布してる代わりにStandard Editionが高くなって手が出ないにょ。無償のExpress Editionの方はMFCとか付いてないし……(ま、MFCじゃなくてASPとかF... ...続きを見る

ブログ気持玉 / トラックバック / コメント

2009/07/17 19:03
アナログ絵師のための画像色補正ツールにょ
 先日、ベクターに登録依頼したソフトが公開されたみたいにょ。 ...続きを見る

ブログ気持玉 / トラックバック / コメント

2009/04/12 02:42
そろそろ自作の画像ツールを公開しようかにょ?
 アルバイトでソフト開発の仕方とかいう内容の文章を執筆してるのだけど、その中で簡単なツールを発案、仕様確定からテスト工程、マニュアル作成まで簡単に具体例を挙げながら書いてたら、最後にフリーソフトとしてネットに公開するとかいうとこまで行き着いてしまったにょ。  ま、本来は教務での開発を知らない人にどうやって開発していくかって話なんだけど、練習ついでに作ったものでも、画期的で便利なものなら公開してみようって流れになったにょ。  で、ふと思いかえったら、自作絵の調整に使ってる画像の色調整ツールであ... ...続きを見る

ブログ気持玉 / トラックバック / コメント

2009/02/05 23:41

トップへ | みんなの「プログラミング」ブログ

TweetsWind
結城あすかの毎日電波思考 (あすか日記) プログラミングのテーマ/BIGLOBEウェブリブログ
文字サイズ:       閉じる