画像中に含まれる信号機(青・黄・赤)を抽出して出力画像に示す、といったプログラムを作成しようとしています。


認識率を高めるにはRGBの閾値を定めて抽出するだけでは不足ですよね?


微分フィルタなどの技法は知っていますがそれをどう使えばいいのかが考えてもわかりません。

どういった技法が有効なのでしょうか?是非回答よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

千差万別あると思いますね。


色情報を使う方法、エッジ形状のテンプレートマッチングを併用する方法、etc。
http://www.sic.shibaura-it.ac.jp/~yaoki/mediaeng …
http://www.ice.nuie.nagoya-u.ac.jp/thesis/2005/0 …

車両用信号灯器なら、

(○○○)

のテンプレートをエッジ画像中から探して、検出した位置で色の条件を併用してみては?

・エッジ化
http://opencv.jp/sample/gradient_edge_corner.htm …
・テンプレートマッチング
http://opencv.jp/sample/matching.html
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qパターン認識について

私は今卒論としてWeb上の静止画像の不正コピーを防止するという研究をしているのですが、自分のやっている研究とパターン認識(画像認識)との関連について話してくださいと言われ、すごい困りました... パターン認識と関係ないんじゃないか?と思うのですが、どなたか詳しい方いましたらお願いします。

Aベストアンサー

関係ないなら、「関係ありません」と言い切って、良いのでは。

たとえば、WebブラウザでみてるJPEGファイルを、スクリーンキャプチャしたものを、別途JPEGに変換したならば、99%オリジナルと変わらないでしょうが、bitパターンだけで判断すれば、おそらく「別物」となるでしょう。そういった場合にも対応できるようにするには、その画像自体の特徴をとらえて、不正コピーを見破る、とったアプローチもあるかなあ、とか。逆にそういうのじゃあダメなんです、とか。
電子すかしの実装として、画像認識技術を応用するとか。

Q座標値を読み込んである領域に含まれているかどうかを示すプログラム

プログラミングで課題が出たのですがさっぱりわからないのでどなたか教えてください!


座標値 (x, y) を読み込み,点 (x, y) が 領域1または2に属すれば(境界を含む)1を出力し,それ以外(どちらの領域にも属さない)なら0を出力するプログラムを書きなさい.

領域1
7.0 ≦ x ≦ 21.2
-1.5 ≦ y ≦ 13.8

領域2
-12.4 ≦ x ≦ 10.0
-14.0 ≦ y ≦ -7.7


おそらくかなり見当違いなことをしていると思いますが、以下です。

#include <stdio.h>

int main(void)
{
double x, y;
scanf("%f%f\n",&x,&y);

printf("%f\n", x >= 7.0 && x <= 21.2 && y>= -1.5 && y <= 13.8 || x >= -12.4 && x <= 10.0 && y >= -14.0 && y <= -7.7);
}

よろしくお願いします。

プログラミングで課題が出たのですがさっぱりわからないのでどなたか教えてください!


座標値 (x, y) を読み込み,点 (x, y) が 領域1または2に属すれば(境界を含む)1を出力し,それ以外(どちらの領域にも属さない)なら0を出力するプログラムを書きなさい.

領域1
7.0 ≦ x ≦ 21.2
-1.5 ≦ y ≦ 13.8

領域2
-12.4 ≦ x ≦ 10.0
-14.0 ≦ y ≦ -7.7


おそらくかなり見当違いなことをしていると思いますが、以下です。

#include <stdio.h>

int main(void)
{
double x, y;
scanf("...続きを読む

Aベストアンサー

結論から言えば
scanf("%lf%lf", &x, &y);
です。
double 型に対する型指定子は、 printf() は、 "%f" scanf() は、"%lf" です。
また、当然のことながら、2つの変数に対しては、2つの型指定子が必要です。

最後に scanf() の型指定子に \n を含ませると、ダミーのエンター(これが、あとひとつの入力に見えるわけです)

"%lf" だけでは、2番目の変数に入力が行われないわけです。

Qパターン認識について

画像中に含まれる信号機(青・黄・赤)を抽出して出力画像に示す、といったプログラムを作成しようとしています。


認識率を高めるにはRGBの閾値を定めて抽出するだけでは不足ですよね?


微分フィルタなどの技法は知っていますがそれをどう使えばいいのかが考えてもわかりません。

どういった技法が有効なのでしょうか?是非回答よろしくお願いします。

Aベストアンサー

千差万別あると思いますね。
色情報を使う方法、エッジ形状のテンプレートマッチングを併用する方法、etc。
http://www.sic.shibaura-it.ac.jp/~yaoki/mediaeng/ITS04.pdf
http://www.ice.nuie.nagoya-u.ac.jp/thesis/2005/080230598.pdf

車両用信号灯器なら、

(○○○)

のテンプレートをエッジ画像中から探して、検出した位置で色の条件を併用してみては?

・エッジ化
http://opencv.jp/sample/gradient_edge_corner.html#edge
・テンプレートマッチング
http://opencv.jp/sample/matching.html

Q設計技法、開発技法について

今何をすればいいのか、困っています。
今日先生から、設計技法、開発技法を覚えてこいといわれたのですが、何のことかわからずに困っています。インターネットを調べてもよく分かりません。ぜひ、参考になる本やHPを教えてください。また、簡単に概要を教えてください。

Aベストアンサー

UMLは設計法ではなく、設計結果/設計過程のドキュメント記述方法です。
UMLを利用する設計法としては「ラショナル統一プロセス」が有名です。
その他にヤコブソン法などがあり、ひとくくりにして
「オブジェクト指向設計法」と呼ばれます。

XP(エクストリームプログラミング)は設計法と言うよりもプロジェクト管理手法であり、設計自身の事を説いているわけではありませ。

一般的に設計法はいくつかのフェーズに分類できます。
・要求定義フェーズ
・分析フェーズ
・設計フェーズ
・開発フェーズ
・試験フェーズ
「オブジェクト指向設計」や「構造化設計」は全てのフェーズに対応します。

ソフトウェアライフサイクルの観点から「設計/開発フェーズをどのように繰り返すか?」という議論があります。

ウォーターフォールモデルは設計過程をを「独立したフェーズが連続するもの」と捉え、各フェーズが完全なドキュメントを作成することを要求します。

スパイラルモデルは設計過程を「ゆるい連携のフェーズが連続し、全体でひとつのフェーズを形成する」と捉え、ソフトウェアの完成まで何度も全体が繰り返されます。
また、手戻りを恐れませんので、後ろのフェーズで前のフェーズの間違いが見つかったら躊躇せずに前にフェーズに移動します。

日本ではスパイラルモデルが有効に機能している例は少ないようです。
多分、ユーザ(ソフトウェア発注者)に対してスパイラルモデルの有効性が浸透していないため、「手戻り」や「繰り返し」という部分を嫌うユーザが多いためでしょう。

わざと色んなキーワードをちりばめてみました。
全てを包括して解説する書籍はありませんので、キーワードを使って検索してみてください。

UMLは設計法ではなく、設計結果/設計過程のドキュメント記述方法です。
UMLを利用する設計法としては「ラショナル統一プロセス」が有名です。
その他にヤコブソン法などがあり、ひとくくりにして
「オブジェクト指向設計法」と呼ばれます。

XP(エクストリームプログラミング)は設計法と言うよりもプロジェクト管理手法であり、設計自身の事を説いているわけではありませ。

一般的に設計法はいくつかのフェーズに分類できます。
・要求定義フェーズ
・分析フェーズ
・設計フェーズ
・開発フェーズ
...続きを読む

Qフレンチ、イタリアンなどで、センターに小高く皿に盛り付けて、皿の余白に

フレンチ、イタリアンなどで、センターに小高く皿に盛り付けて、皿の余白に茶色やグリーンのソースが撒かれています。主に肉料理では何のソースでしょう??

Aベストアンサー

某ホテルのソムリエです。

グリーンのソースは捻り無く考えればバジルソースが妥当でしょう。
ただ、フランス料理は肉料理にバジルソースは基本的に使わないですね。
レストランのレベルにもよりますが、飾りの為だけにグリーンのソースがあるなら
やはり、バジルソースでしょう。
多めに作って冷蔵庫に入れておけば長い間使えますし、色んな料理にそのまま使えて楽ですから。

濃いグリーン系のソースならバジル。
やや淡いグリーンならハーブ系ソース。
淡いグリーンなら、グリーンピースなど豆系でしょう。
ただ、どれも味の面から考えれば肉料理に使う意味はあまりないソースです。

茶色は、バルサミコでしょう。
ソースらしい感じのソースならマデールでしょう。

もし、その料理を作った料理人が考えて料理を組み立てて、思いが入った料理なら、僕が
書いたソースと全く違う物を使っているかもしれません。

でも、バジルとバルサミコが一番可能性が高いですね。

QIplImageをHSの閾値から2値化をしようとしています.

IplImageをHSの閾値から2値化をしようとしています.
表示させたい画像は1920x1080で取り込んだ1枚の画像の2値化です.
しかし以下のプログラムを実行し実際画像を見てみると,
1枚の画像の中にx=1080以降から
同じ画像がもう一枚でてきます.

どうすれば一枚の画像をそのまま2値化して表示することができますか?
よろしくおねがいします.

xx=1920;
yy=1080;

for(yy = 0; yy < frame->height; yy++)
{
  for(xx = 0; xx < frame->width; xx++)
  {
if(HSV[yy][xx].H > HMin && HSV[yy][xx].H < HMax && HSV[yy][xx].S > SMin && HSV[yy][xx].S < SMax)
{
  src_buf[frame->width * yy + xx] = 1;
  frame->imageData[frame->widthStep * yy + xx * 3] = 0x00;
  frame->imageData[frame->widthStep * yy + xx * 3 + 1] = 0x00;
  frame->imageData[frame->widthStep * yy + xx * 3 + 2] = 0x00;
}
else{
  src_buf[frame->width * yy + xx] = 0;
  frame->imageData[frame->widthStep * yy + xx * 3] = 0xff;
  frame->imageData[frame->widthStep * yy + xx * 3 + 1] = 0xff;
  frame->imageData[frame->widthStep * yy + xx * 3 + 2] = 0xff;
}
  }
}

IplImageをHSの閾値から2値化をしようとしています.
表示させたい画像は1920x1080で取り込んだ1枚の画像の2値化です.
しかし以下のプログラムを実行し実際画像を見てみると,
1枚の画像の中にx=1080以降から
同じ画像がもう一枚でてきます.

どうすれば一枚の画像をそのまま2値化して表示することができますか?
よろしくおねがいします.

xx=1920;
yy=1080;

for(yy = 0; yy < frame->height; yy++)
{
  for(xx = 0; xx < frame->width; xx++)
  {
if(HSV[yy][xx].H > HMin && HS...続きを読む

Aベストアンサー

・frameの中身: cvCreateImage等の設定はどうなっているのか
・src_bufの中身: 変数宣言、領域確保など
・HSVの中身: 変数宣言、領域確保、この箇所に来た段階での値など
・画像の作成方法: frame をcvSaveImageしたもの?

と、わからない点が多いので、この部分が正しいかどうか判断できません。

また
> xx=1920;
> yy=1080;
としたものをループカウンタに使ってしまっていますが、これはよいのですか?
ループ終了時点で xx = frame->width, yy=frame->heghtになって、元にもどっているかもしれませんが。

Q池や沼に小高い丘が点在する風景

趣味できりえをやっております。
その題材の景色として、平野部で、池や沼が点在し、200m~400mぐらいの小高い山、もしくは丘がいくつか聳えているような風景を追い求めております。
日本のどこかでそんな風景が広がるおススメな所はございますか。
沼地に蓑をまとった船頭さんが小高い丘をバックに舟を漕いでいる。
丘の周辺にはいくつか集落が点在する。
そんな風景を描きたいと思っております。
(昔ペヤングで、ふる里うどんという商品のCMがありましたが、そんな風景です。)
私は埼玉県の者なので、できれば日帰りで行ける関東地域であればいいのですが、
西日本でも構いません。
地図を見ると、香川県や愛知県、奈良県など池や沼が多いですね。
(丸亀市の飯野山辺りなど近いのかな?)
ピッタリとまでは行かなくても構わないです。
おすすめのスポットがございましたらどうぞよろしくお願い致します。

Aベストアンサー

滋賀県近江八幡市:水郷巡り(パンフレットの写真の様なこうけいです)
http://www.za.ztv.ne.jp/tekogi.maruyama/koutsu.html
海雲寺付近が良いと思います。
この位置から左前方に長命寺の山頂が見えるはずです。
この向こう岸であれば近江八幡(山)が正面に見えます。
http://link.maps.goo.ne.jp/map.php?MAP=E136.6.7.238N35.9.37.871&ZM=8

お泊りはこの近くの”近江八幡ユースホステル”があります。

Q平滑化フィルタなどフィルタリングをするにあたって

3*3近傍のフィルタを掛けるとき、
注目画素を、(1,1)などからはじめめれば、上下左右に3*3近傍があるので、フィルタを普通に掛ければいいと思うのですが、

注目画素を(0,0)(一番左上)にしたときは、注目画素の左近傍や
上近傍が無いですよね。そういうところはどうやってフィルタかければいいのでしょうか?

値の無い場所は無視して、ある場所だけ掛けて計算すればいいのでしょうか?(例えば上の例だったら、右、斜め右下、下、注目画素の4点だけフィルタ掛けて計算すればいいのでしょうか?)

Aベストアンサー

方法は3つ。
・画面外には、注目画素と同じ画素があると仮定して9画素で計算
・通常は9画素、辺は6画素、角は4画素で計算
・画面外には特定の背景色があると仮定して9画素で計算

1つ目の方が処理は楽。上下左右に1画素づつ広い仮想画面(縦横が実画面+2画素)に展開してから計算すれば良いから(実画面の(0,0)を仮想画面の(1,1)に置き、仮想画面の(1,1)から普通にフィルタ処理する)

2つ目の方が(画像の縁辺での)精度は高い。しかし、辺、角での特殊処理が処理を遅くする。

3つ目は「フィルタ後の画像を白い背景の中に配置する」など、ある特定色を背景にしたい場合に使用する。

Q小高恵美さんの最近の活動

女優の小高恵美さんが、まだ芸能活動を続けているのか、しているとすれば、どのような内容か、ご存じでしたら教えてください。

第2回東宝シンデレラコンテストでデビューし、映画「竹取物語」に出演。1987年TV「花のあすか組」で、石田ひかり、小沢なつきと共演。

1990年代に映画「ゴジラ」シリーズ、2000年ごろ金曜ドラマエンタテインメント(フジテレビ系)「柚木草平の事件簿」シリーズに出演されていました。

あすか役のときのショートカットが、トラウマになる程のファンでした。

Aベストアンサー

張り忘れました。(゜д゜υ)
ごめんなさい

参考URL:http://www.geocities.co.jp/MusicStar-Drum/5154/douga.html

Q特定座標のRGB値取得について

kimarioと申します。

実行中の、あるアプリケーションの任意座標位置のRGB値を取得し、その結果を
メッセージボックスにて表示させたいと考えております。
しかし下記のプログラムを実行すると、どの座標位置でもすべて(-1)で返ってき
てしまいます。

getDCの戻り値が(0)ではないことを確認しているので、デバイスコンテキストの
ハンドルは取得できているものと思われます。
API初心者です。よろしくお願いいたします。

補足)
アプリケーションのウィンドウタイトルが「XXYYZZ」
色を特定したい座標を(60, 60)としています。

############################################################################

public partial class Form1 : Form
{
[DllImport("user32.dll")]
static extern IntPtr GetDC(IntPtr hWnd);
[DllImport( "user32.dll" )]
static extern int ReleaseDC( IntPtr hWnd, IntPtr hDC );
[DllImport( "gdi32.dll" )]
static extern int GetPixel( IntPtr hDC, int x, int y );

public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
foreach (Process p in Process.GetProcesses())
{
if (p.MainWindowHandle != IntPtr.Zero)
{
if (p.MainWindowTitle == "XXYYZZ")
{
IntPtr dc = GetDC(p.MainWindowHandle);
MessageBox.Show(GetPixel(dc, 60, 60).ToString());
}
}
}
}
}

kimarioと申します。

実行中の、あるアプリケーションの任意座標位置のRGB値を取得し、その結果を
メッセージボックスにて表示させたいと考えております。
しかし下記のプログラムを実行すると、どの座標位置でもすべて(-1)で返ってき
てしまいます。

getDCの戻り値が(0)ではないことを確認しているので、デバイスコンテキストの
ハンドルは取得できているものと思われます。
API初心者です。よろしくお願いいたします。

補足)
アプリケーションのウィンドウタイトルが「XXYYZZ」
色を特定したい...続きを読む

Aベストアンサー

すいません、
どうやら私の方が先入観で書いてしまっていたようです。

MSDN によると――
>現在のクリッピング領域の外側の座標が指定されたときは、
CLR_INVALID が返ります。

CLR_INVALID は wingdi.h をみるに 0xFFFFFFFF = -1 なので、
おそらく上記のエラーが報告されているのだと思われます。
描画範囲の外側を指定していないかどうか、
誤ったクリッピング領域の設定を行っていないかどうか、
などをチェックしてみてはいかがでしょうか。

……ドキュメントくらい確認しておくべきでした。


人気Q&Aランキング

おすすめ情報