• 締切済み

ImageJを用いた五角形計測のマクロ化

Gooで初めて質問させていただきます。 仕事の関係で「ヒトがフリーハンドで書いた五角形の各辺(線分)の長さや隣り合う辺がなす角度」を計測する必要が生じ,これをなるべく迅速かつできるだけ正確に行えないか?ということで,以下のことをトライしてみました。 1.白紙(A5版)に五角形をフリーハンドで書く 2.スキャナで取り込む(条件:600dpi,JPEG) 3.パワポ上でこの五角形の頂点を「図形描画>フリーフォーム」でクリックしつつトレース 4.トレースできた五角形のみをJPEGで保存 5.ImageJで開く …で,この五角形(フリーハンドで書いた五角形をトレースしたものなので,当然,正五角形ではありません。)の各辺の長さと隣り合う辺のなす角度を画像解析ツールで測定し,5辺の長さと五箇所の角度を一気に結果表示する…というようなマクロプログラムというのは書けるものなのでしょうか。 ImageJは初心者なもので,もしおわかりの方がいらっしゃいましたら御教示くださいますようお願い申し上げます。

みんなの回答

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.1

ImageJ関係なく、 > 1.白紙(A5版)に五角形をフリーハンドで書く > 2.スキャナで取り込む(条件:600dpi,JPEG) > 3.パワポ上でこの五角形の頂点を「図形描画>フリーフォーム」でクリックしつつトレース この時点でパワポは5点の座標を知ってるわけですから、VBAで計算してしまう方が簡単だし、画像化する事による余計な誤差が入らずに済むのでは。 5点取り出すVBAですと、Power Pointの1枚目のスライドに、5点以上のフリーフォームが1つある状態で、 ・Alt+F11でVBE起動。 ・左側プロジェクトエクスプローラの対象プレゼンテーションを右クリック-[挿入]-[標準モジュール] ・下記のVBAをコピペ -----ここから----- Sub GetPentaInfo()  Dim x(5) As Single  Dim y(5) As Single  Set myDocument = ActivePresentation.Slides(1)  With myDocument.Shapes(1).Nodes   For iCount = 1 To 5    pointsArray = .Item(iCount).Points    x(iCount) = pointsArray(1, 1)    y(iCount) = pointsArray(1, 2)    MsgBox x(iCount) & ", " & y(iCount)   Next  End With End Sub -----ここまで----- ・パワーポイントに戻り、Alt+F8でマクロ呼び出し、「GetPentaInfo」を実行 で、5点の座標が表示されます。 あとは、三平方の定理で辺の長さを求めたり、3点のなす角なんかを求める式で角度計算とか。

KazuUshi
質問者

お礼

neKo deux様 早速に誠に御丁寧な解説をご教示くださり、本当に有り難うございました。 VBAもほぼ初心者ですが、自力でなんとか頑張ってみます。 本当に有り難うございました。

関連するQ&A