C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: 細かい粗いを数値化したい


(過去ログ 135 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■79680 / inTopicNo.1)  細かい粗いを数値化したい
  
□投稿者/ こまお (31回)-(2016/04/30(Sat) 14:11:23)

分類:[C/C++] 

こんにちは。またopencvネタです。
画像の模様の細かさ(粗さ)を数値化したくていろいろ試しています。
↓の様なインターフェイスにして、細かさのレベルを分けられるよ
うにしたいのですが。良い手をご存知の方おられませんでしょうか。
CPUを食わない簡易な方法であれば歓迎です。
よろしくおねがいいたします。

#include <iostream>
#include "opencv2/opencv.hpp"

/*
	例えば砂粒の画像を見せると"細かい"と答え、
	例えば石ころの画像を見せると"粗い"と答える
*/
int computeFineness(cv::Mat const& img) {
	int fineness = 0;

	//バックグラウンドを引いてから2値化
	//アップダウンを数える
	//ラベリングしてみる
	//いろいろやったけど決定打なしorz

	return fineness;
}

/*
	お試し
*/
void main(void)
	cv::Mat img = cv::imread("anImage.bmp", 1);
	std::cout << computeFineness(img) << std::endl;
}


引用返信 編集キー/
■79681 / inTopicNo.2)  Re[1]: 細かい粗いを数値化したい
□投稿者/ Azulean (637回)-(2016/04/30(Sat) 20:45:43)
2016/04/30(Sat) 20:50:54 編集(投稿者)

粗い・細かいは、雰囲気的には粒子の大きさ?なんですかね。
「粒子解析」といった言葉でソフトウェアが売られているレベルのことなので、かんたんに書いてもらえるレベルのことではないはずです。
(著作権、企業秘密、場合によっては特許が絡んでくる分野だと思います)


単純な方法は2値化、ラベリング、その領域の面積や周囲長から判定でしょう。
(ただ、世の中の「粒子解析」のソフトはさらに進んだ機能がいくつか乗っていると思いますが。膨張や縮退、ひっついた粒子の切り分けなど)

また、大きな粒子と小さな粒子が混在していた場合、答えは何であるべきかという肝心な部分はあなた自身で決めなければなりません。
そういう意味では、他人に答えてもらえる内容ではないように思えます。
引用返信 編集キー/
■79694 / inTopicNo.3)  Re[2]: 細かい粗いを数値化したい
□投稿者/ こまお (33回)-(2016/05/04(Wed) 08:51:32)
GW中のレスありがとうございます。

粒子解析でググると出てくるのは細胞やら最近やらが平面上に1列
に並んだりあるいは散らばっていたりする画像で、粒の数を数え
たり、大きさを計ったりするものが多いですが、そうではなくて
例えば砂場の砂とか庭の敷き砂利とかそういう、重なったり積み
上がったりした状態で粒の大きさを計りたいと思っていて、ちょ
っと方向性が違うのかなと思っています。

空間周波数とかそういう単語を見つけて勉強中です
#ムツカシイ;

引用返信 編集キー/
■79695 / inTopicNo.4)  Re[3]: 細かい粗いを数値化したい
□投稿者/ Azulean (638回)-(2016/05/04(Wed) 20:57:15)
2016/05/04(Wed) 21:15:58 編集(投稿者)

No79694 (こまお さん) に返信
> 粒子解析でググると出てくるのは細胞やら最近やらが平面上に1列
(略)
> 例えば砂場の砂とか庭の敷き砂利とかそういう、重なったり積み
> 上がったりした状態で粒の大きさを計りたいと思っていて、ちょ
> っと方向性が違うのかなと思っています。

これから処理しようとしているものも、2次元(XY 平面)で撮影した画像ですよね?
ゆえに、平面上に並んだ粒子の演算の一種だと思うんですが、違うのですか?

細胞だって、奥行き(Z 方向)に複数重なることがありますし、粒子解析には金属やら結晶やらもあるので生物分野に限った話でもありません。
見ている対象がなんであれ、2 次元画像を 2 値化して、整形して、面積などを計るってだけの話ではないでしょうか?

もちろん、2 値化や整形のアプローチ、テクニック、パラメーターが違うというならあるかもしれませんね。
でも、個々のステップで違うテクニックを使うとしても、基本的な流れは一緒でしょう。

それなのに、対象物が違うから「参考にしない」のは結論が早すぎると感じざる得ません。
個別のステップでそのまま使えないとしても、どういった手法、画像処理があるのかを学び、応用する心持ちで挑んでいただいた方が良いと思いますよ。


> 空間周波数とかそういう単語を見つけて勉強中です

FFT で周波数領域への変換を使った画像解析ですか?
それって、あくまで周期的な模様の分析とか除去とかでしょうから、粒の大きさとは違うと思います。



なんだかんだ書きましたが、結局のところ、いろいろと学んで自分の目的に合うものを選んでいただくしかないので、これ以上の助言は難しいと考えています。

私の発言が厳しい部分もあったかと思いますが、調査・検討を引き続き頑張ってください。
引用返信 編集キー/
■79701 / inTopicNo.5)  Re[3]: 細かい粗いを数値化したい
□投稿者/ みい (49回)-(2016/05/07(Sat) 12:53:27)
ブロブ(Blob)検出という分野になります。

正直なところ自力で書いてというのはかなり難しいですよ。
画像処理ソフトやライブラリ(OpenCV等)の使用を検討することを
お勧めします。
引用返信 編集キー/
■79702 / inTopicNo.6)  Re[4]: 細かい粗いを数値化したい
□投稿者/ みい (50回)-(2016/05/07(Sat) 12:58:34)
No79701 (みい さん) に返信
> ブロブ(Blob)検出という分野になります。
>
> 正直なところ自力で書いてというのはかなり難しいですよ。
> 画像処理ソフトやライブラリ(OpenCV等)の使用を検討することを
> お勧めします。
間違えた。
OpenCVではcvBlobでできたはずです。
ただCOGNEXのVisionPro等有料のソフトの方が使い勝手はいいので
そちらの検討もお勧めします。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -