画像をMATLAB中でグラフにする方法について
Show older comments
こんにちは。私は高校生でMATLABを用いて授業で研究を行っているのですが、躓いてしまったので解決策を教えていただければと思います。
研究の動機として、この動画を再現してみたいと考えMATLABを使い始めました。https://www.youtube.com/watch?v=BQvBq3K50u8&t=317s この動画の中ではYoutube上にある動画をjpg画像でコマ送りのようにして、そのうえで画像をグラフに変換し描写しています。これをすべてMATLAB上で行えないか試行錯誤していますが、エッジ検出した後の画像をグラフに落とし込む事ができません。その部分を教えていただければと思います。
エッジ検出に用いたMATLABのコードは以下の通りです。
RGB = imread('BAd.jpg'); %画像のファイル名を入れる,file name
imshow(RGB)
I = rgb2gray(RGB); %グレースケールに画像を返還変換 change the image into gray scale
figure
imshow(I) %グレースケールの画像を表示 display the image of above one
[~, threshold] = edge(I, 'sobel');
fudgeFactor = .3; %画像の読み込む深さ depth of read the image
BWs = edge(I,'sobel', threshold * fudgeFactor);
figure, imshow(BWs), title('edge-detected-RIOREUSU'); %適当に名前を付けていいよ
この先どうすればいいか行き詰っています。よろしくお願いします。
4 Comments
Atsushi Ueno
on 13 Oct 2021
GitHub - kevinjycui/DesmosBezierRenderer: A simple image/video to Desmos graph converter run locally
動画をみました。Desmosって何?Potraceって何?ってとこからはじまりました。
Desmosという数式をグラフ表示するソフトウェアにベジエ曲線の数式を大量に送り込んで動画に見せてるんですね
あと画像をどうやってベジエ曲線で表現するかについて説明しています
- 画像のエッジ検出を行う(OpenCVのCanny法アルゴリズムを使っている)
- ラスタ画像をベクタ画像に変換に変換する。変換に使うソフトがPotrace
- Potraceより得られたベジエ曲線の制御点からLateXコマンドを作成
- LateXコマンドを羅列したJSONデータを作成しDesmosのAPIに渡す
- DesmosをFlask(ウェブ画面)で開いて数式をグラフ表示する
の様な操作をPythonで実装しています。これをMATLABでやるなら
- 強度イメージ内のエッジの検出 - MATLAB edge - MathWorks 日本(既に書いてますね)
- ラスタ画像をベクタ画像に変換に変換する(MATLABで何を使うべきかパッと出てこない)
- Desmosの代わりにMATLABのFigureを使うのでLateXコマンドやJSONデータは不要
MATLABでどうするか困ったのが、Potraceでラスタ画像をベクタ画像(ベジエ曲線の制御点)に変換するところです。同じソフトウェアのAPIをMATLABで叩くか、同様の機能を探すか(さっとググってもすぐには見つかりませんでした)
土日にゆっくりみてまた何かあれば追記します。グラフでBadAppleやりましょう!楽しい!
恭歓(Yasuyoshi) 増田(Masuda)
on 14 Oct 2021
Edited: 恭歓(Yasuyoshi) 増田(Masuda)
on 14 Oct 2021
Atsushi Ueno
on 16 Oct 2021
>"I"が二次元出なければならないとのことでしたが、どういう事でしょうか?
imread('ポニョ.jpg')の出力がRGBのカラー情報を含む三次元データだった為、edge関数が受け付けませんでした。
rgb2gray関数でカラー情報を含まない二次元データに変換すれば動きます。
I = rgb2gray(imread('ポニョ.jpg')); % Modified the filename
Atsushi Ueno
on 16 Oct 2021
Edited: Atsushi Ueno
on 16 Oct 2021
>メモ: JPEG、TIFF、および PNG ファイルでは 'vector' オプションはサポートされていません。
MATLABは、SVG等のベクタ画像を出力する機能を(exportgraphics関数に限らず)持っています。
しかしこれは、MATLABの図形データをベクタ画像としてエクスポートする機能です。
今求めているのはラスタ画像をベクタ画像に変換する機能であって、少し違います。
Answers (0)
Communities
More Answers in the ThingSpeak Community
Categories
Find more on Red in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!