!!! サイト改修中のため表示が乱れる場合があります(1月末頃まで) !!!
画像処理

14-36. グラフ画像から数値データをリバースエンジニアリングする

やること

自治体さんから緊急の依頼がありました。PDFで保存さているグラフ画像を大至急、数値データに戻してほしいとのことです。こんな感じのPDF画像が大量に送られてきました (゚д゚; )アレマー

古典的な画像処理でリバースエンジニアリングできますので手順を紹介します。Python(+OpenCV)とImageJを使用しました。

傾きの修正

まず、画像全体の傾きを修正します。OpenCVで直線を検出して、傾きが直るように回転させます。

今回はスキャナで取り込まれた画像なので台形補正などは不要でした。もしカメラで撮った写真だったりすると台形補正や明るさの調整も必要になります。

グラフ領域の抽出、線の抽出

グラフの枠線や軸の数字を検出してグラフ領域を抽出します。Excelのグラフらしく右側に枠線がありません。ミスを防ぐために右側に余白を残しました。(うっかり削り込んでしまっても気が付けないので)

青色を検出して二値化します。

そのまま次のステップに進んでも良いのですが、ここではエッジ検出を適用して線の上部と下部をあぶり出しました。

今回のグラフは横軸が0~47.5、縦軸が0~300の範囲で揃っています(やりやすくて助かりますね)。これを考慮してこの時点の画像サイズを (475, 300) に調整してあります。この後の処理が単純になります。

値の抽出

上部と下部の中間の値を読み取ります。

個別のcsvファイルに保存していきます。全部で1100個のデータファイルができました。この量は手動では不可能ですね。

以上で処理は終了です。

データの確認

抽出したデータと元のグラフ画像を重ねて精度を確認してみます。赤線が今回抽出したデータ(をExcelでグラフにしたもの)です。

良さそうですね!y=0付近の値は埋もれがちなので慎重に抽出しました。

もちろん完全な復元はできません。どうしても少し丸まってしまいます。要求される精度によっては途中の工程が2倍にも3倍にも増えそうです。

おわりに

グラフ画像のリバースエンジニアリングができました。

企業や自治体に眠っている「データ化されていない」データがあればお気軽にご相談ください。

リアクションのお願い

「参考になった!」「刺激された!」と思ったらぜひリアクションをしましょう。エンジニアの世界はGive and Takeによって成り立っています。これからも無料で良質な情報にアクセスできるよう、Giveする人への感謝をリアクションで示しましょう!

この記事をシェアする

自身のブログ等で使用する場合は引用を忘れずに!

また、寄付も受け付けています。コーヒー1杯でとても喜びます(*˘︶˘*)

 Amazonでギフト券(アマギフ)を贈る

こちらのリンク から金額を指定してお贈りください。(デフォルトで10000円になっているのでご変更ください)

配送:Eメール
受取人:staffあっとvigne-cla.com
贈り主:あなたのお名前やニックネーム
メッセージ:◯◯の記事が参考になりました。など

のようにご入力ください。見返りはありませんのでご了承ください。

 Amazonで食事券(すかいらーく優待券)を贈る

500円 1000円 2000円 5000円 からお贈りください。

配送:Eメール
受取人:staffあっとvigne-cla.com
贈り主:あなたのお名前やニックネーム
メッセージ:◯◯の記事が参考になりました。など

のようにご入力ください。見返りはありませんのでご了承ください。

 その他、ギフト券やクーポン券をメールで贈る

デジタルのギフト券/クーポン券はメールアドレス(staffあっとvigne-cla.com)までお送りください。受領の返信をいたします。
紙のギフト券/クーポン券は 「郵便物はこちらへ」の住所 まで送付してください。名刺やメールアドレスを同封していただければ受領の連絡をいたします。
余った株主優待券等の処理におすすめです。
いずれも見返りはありませんのでご了承ください。

不明点はSNSでお気軽にご連絡ください

ビネクラのTwitter・Youtubeでコメントをください!


Slack・Discordの場合はこちらの公開グループに参加してShoya YasudaまでDMをください!


※当ブログに関することは何でもご相談・ご依頼可能です。

この記事を書いた人
Yasuda

博士(理学)。専門は免疫細胞、数理モデル、シミュレーション。米国、中国で研究に携わった。遺伝的アルゴリズム信者。物価上昇のため半額弁当とともに絶滅寸前。

タイトルとURLをコピーしました