プロコン協議部門 ハート・イズ・ノット・イナフ -ケニアより愛を込めて- ハードウェア構成 ノートパソコンを2台使用する。 一台は予備機。 別々のアルゴリズムで動かす(できれば)。 ソフトウェア構成 ・処理Aと処理Bを並列して行う。 処理A:ハート画像の変換 画像ダウンロード部(ハート画像) 画像変換部 処理B:比較処理 画像ダウンロード部(原画像) 画像変換部 ライン情報取得部 画像比較部 解答出力部 解答送信部 処理Aの流れ 処理A ・画像ダウンロード部 サーバからハート画像をダウンロードする。 ・画像変換部 ダウンロードして取り込んだ原画像をPNG形式からグレースケールPPN形式に変換する。 以上の処理を未処理のハート画像がなくなるまで繰り返す。 未処理のハート画像が無くなったら処理Bに切り替える。 処理Bの流れ 処理B ・画像ダウンロード部 サーバから原画像をダウンロードし、取り込む。 ・画像変換部 ダウンロードして取り込んだ原画像をPNG形式からグレースケールPPN形式に変換する。 ・ライン情報取得部 処理Aで変換したハート画像から、ハートの中心を通るラインの情報を数度ずつ取得する。 ・画像比較部 ライン情報取得部で得られたデータと原画像のデータを比較する。 ・解答出力部 画像比較部で得られた結果を取得し、一致しなければ次のハート画像のデータを受け取って処理を開始 し、一致した場合は画面にどの画像がどこと一致したのかを表示し、人間の目で確認する。 ・解答送信部 一致していると判断した場合、その結果をサーバに送信する。間違っていると判断した場合は送信せず、 次のハート画像のデータを受け取り、ライン情報取得部に戻る。 以上の処理を時間切れまで繰り返す。 画像比較について PNG画像をグレースケールPPN画像に変換する理由 PPN画像は1つの画素を3つの数字であらわす形式なので扱いやすい。 カラー画像は複雑なので、グレースケール画像に変換し、簡単化する。 ハート画像から取り出すライン情報について ハートの中心を通るラインの濃度の情報を取得する。 それを数度ずつ回転させながら0度∼180度までの情報を取得する。 その情報を反転させれば、残りの180度分の情報を得ることができる。 この取得した情報と原画像の一列分の中の情報が一致する部分を探し出す。 画像回転はこの360度分のデータがあれば対応できる。 画像の上下・左右反転も情報を反転させれば対応できる。 また、取得したライン情報を波形として捉えることにより、 その波形の各部の接線の傾きのデータから拡大・縮小に対応できる。 環境 開発環境 WindowsXP/2000 ,Linux(予定) 使用ソフト Micro soft Visual C++ Cygwin Image Magic
© Copyright 2024 Paperzz