タグ付けされた質問 「matlab」

MATLAB(MATrix LABoratory)は数値計算環境であり、第4世代のプログラミング言語です。このタグは注意して使用してください。抜粋を参照してください。

6
さまざまな素材の画像セグメンテーションの問題
こんにちはCV /パターン認識コミュニティ、 画像のセグメンテーションに関して深刻な問題があります。シナリオは、私の頭を狂わせる炉内の雰囲気です。また、1つの特殊なケースだけでなく、さまざまな材料(ガラス、セラミック、Al、Irなど)のオブジェクトの輪郭を短時間(10秒未満)で検出する必要があります。また、コードのピクセルの連続した行に輪郭が必要です。したがって、チェーンコードまたはいわゆるボーダー/輪郭追跡も必要であるため、オープンホールは適切ではありません。バックグラウンドには、ほこり、粒子などの非線形ノイズが時々現れます。 MatlabまたはOpenCVの提案を歓迎します。 より明確にするために、目標と半透明のオブジェクトの別の画像を投稿しましたが、これも検出する必要があります。また、知っておく必要があるさらなる例。 画像#1を見るとわかるように、画像の右側の部分と、オブジェクトである星の外側の輪郭の近くに粒子があります。また、全体的なコントラストはあまり良くありません。オブジェクト自体は地下にあり、輪郭検出には関係ありません。画像#2は半透明のオブジェクトを示していますが、これも可能です。 次の画面(赤い線)のように、そのオブジェクトの輪郭/境界を見つけたい。2つの長方形(黄色)は、開始点(左)と終了点(右)を示しています。青い線は無視できます。 最初は、フィルターだけでその不潔な雰囲気の問題を解決できると思いました。しかし、多大な時間を費やした後、前景と背景のコントラストを高めるためにノイズを大幅に除去または削減する必要があることに気付きました。ヒストグラム等化、大津適応等化、線形フィルター(ガウスなど)、非線形フィルター(中央値、拡散)、Active Contours、k-Means、Fuzzy-c-means、純粋なCannyなど、多くの方法を試しました。形態学的演算子と組み合わせたエッジ検出。 キャニー:粒子と大気が穴の原因になっていますが、オブジェクトの完全な輪郭が必要です。モルフォロジー演算子を閉じて拡張しても、それだけでは十分ではありません。Cannyには、ヒステリシスがあるため、私が研究したすべての方法の中で最高の結果が残っています。 アクティブな輪郭:エッジ/グラデーションでも機能します。オブジェクト内で初期化した後、完全に狂ったように動作します。これは、エッジマップが「開いた」オブジェクトになっていることが原因である可能性があります。私の知る限り、輪郭を閉じなければなりません。さまざまな派生物(GVF / VFC / Classic Snake)で試してみました。 k-Means:霧の背景のため、結果には炉の雰囲気が含まれます。ファジーc-meansについても同じです。オブジェクトを背景から分離するため、2つのクラスターを選択しました。クラスターが多いと、結果が弱くなります。 ヒストグラム/大津:グレーの強度が非常に近いため(imho!)、オブジェクトと背景をマージしています。ローカルおよびグローバルな方法で試してみました。 フィルター:特にGLPFまたは他のLPFがエッジを塗りつぶしますが、これはあまり良くなく、霧の雰囲気さえも低減しません。 非線形フィルターはエッジを保持しています。それらのほとんどは、大きな画像の計算に時間がかかりすぎます。とりあえず、高速の双方向フィルタを使用しました。結果は以下を参照してください。 したがって、得られたオブジェクトセグメントの結果は既存のアルゴリズムと十分に競合しないため、後処理ステップには単一の方法では十分ではありません。既存のアルゴリズムは非常にローカルであるため、この非常に特殊なシナリオで機能します。 何かを完全に見逃してしまった場合、どうすればいいかわかりません。隙間や穴を開けずに、どのように処理し、どのように良好な輪郭結果を得る必要があるのか​​分かりません。 CCDと物理的環境?前もって感謝します! これまでの最後のアプローチ(MOでの長い実験の後): バイラテラルフィルター(エッジを保持しますが、均一な領域を平滑化します) キャニー(シグマ= 2、しきい値= [0.04 0.08]) 形態学的オペレーション(MO): 、 bwareopen、&closingremovebridge bwlabel輪郭の周囲のみを選択し、不要なノイズを除去します。まだスクリーンショットは更新されていませんが、スターには有効です。ガラスには外側の輪郭に接続された内側の輪郭があります。これは下のスクリーンショットでも確認できます。 そのため、外側の輪郭を横断するための特別なアルゴリズムが必要なのではないかと心配しています。近隣の時計回り/反時計回りの検索になります。コーナーポイントがある場合、その時計回り/反時計回りのステップを切り替えることができます。隙間がある場合は、半径を増やしてもう一度見てください。次のポイントが2つ以上ある場合は、前と同じ方向を向いたポイントを選択します。その輪郭追従アルゴリズムは理にかなっていると思いますか?

2
高域通過信号は、信号から低域通過信号を引いたものと同じですか?
私の質問は、信号をハイパスしたい場合、信号をローパスして信号から減算することと同じですか?理論的には同じですか?実質的に同じですか? (googleとdsp.stackexchangeの両方で)検索しましたが、矛盾する答えが見つかりました。私は信号で遊んでいますが、ここに結果があります。私はそれをあまり理解できません。これは、4秒ごとに1回サンプリング周波数を持つ信号です。0.8 mHz〜1 mHzの遷移帯域を持つデジタルローパスフィルターを設計し、信号をフィルター処理しました。次に、同じ遷移帯域を持つハイパスフィルターを設計し、信号をフィルター処理しました。結果は次のとおりです。 この最初の画像は、元の信号を黒で、ローパス信号を青で示しています。それらはほぼ重なり合っていますが、完全ではありません。赤い曲線は、信号から信号の真上にあるハイパス信号を引いたものです。 この2番目の画像は、何が起こっているかを示すためにズームインした最初の画像です。ここでは、明らかに2つが同じではないことがわかります。私の質問はなぜですか?それは2つのフィルターをどのように実装したかに関するものですか、それとも私の実装とは独立した理論的なものですか?フィルターの設計についてはあまり知りませんが、直感に反することで有名です。これをすべて再現する完全なMATLABコードを次に示します。filtfiltコマンドを使用して、位相遅延を解消しています。ただし、ここで指摘するもう1つの点は、フィルターが正規化されていないことです。sum(Hd.Numerator)を実行すると、ローパスで0.9930、ハイパスで0.007が得られます。これを説明する方法がわかりません。係数の合計が1にならないため、出力を何らかの方法でスケーリングする必要がありますか?このスケーリングはこれと何か関係がありますか? close all clear all clc data = dlmread('data.txt'); Fs = 0.25; % Sampling Frequency N = 2674; % Order Fpass = 0.8/1000; % Passband Frequency Fstop = 1/1000; % Stopband Frequency Wpass = 1; % Passband Weight Wstop = 1; % Stopband Weight dens …

2
ノイズの多い信号のSNRを計算するにはどうすればよいですか?
私は実際にそれを行う方法を理解するのに問題があります 純粋な音声を含むwavファイルと、バックグラウンドノイズ(ホワイトノイズ、群衆ノイズ、吹く風の録音など、さまざまなものになる可能性がある)だけを含む別のaveファイルがあります。これらは、純粋な音声または純粋なノイズのいずれかです。したがって、両方のファイルの対応するサンプル(またはサンプルのフレームの平均)を単純に分割することで、それらからSNR値を取得できると思います。次に、それらを大胆に組み合わせて、ノイズの多い音声ファイルを取得します。このファイルにはまだ同じSNRがあると思います。 次に、このファイルをノイズ除去プログラムに渡し、結果として別のファイルを取得します。この「ノイズ低減」ファイルのSNRを計算するにはどうすればよいですか? ---編集--- ここに投稿されたフォローアップの質問
14 matlab  snr 

4
ICA-共分散行列の統計的独立性と固有値
現在、Matlabを使用してさまざまな信号を作成し、混合行列Aで乗算して混合し、FastICAを使用して元の信号を取得しようとしています。 これまでのところ、元の信号と比較した場合、復元された信号は本当に悪いものでした。 私は何か間違ったことをしているかどうかを確認しようとしています。私が生成している信号は次のとおりです。 s1 = (-x.^2 + 100*x + 500) / 3000; % quadratic s2 = exp(-x / 10); % -ve exponential s3 = (sin(x)+ 1) * 0.5; % sine s4 = 0.5 + 0.1 * randn(size(x, 2), 1); % gaussian s5 = (sawtooth(x, 0.75)+ 1) * 0.5; % sawtooth …

2
数式を変更して、あらゆる角度でバーコードを検出するにはどうすればよいですか?-MATLAB
数式を変更して、あらゆる角度でバーコードを検出するにはどうすればよいですか? rgb = imread('barcode4.jpg'); % Resize Image rgb = imresize(rgb,0.33); figure(),imshow(rgb); % Convert from RGB to Gray Igray = double(rgb2gray(rgb)); % Calculate the Gradients [dIx, dIy] = gradient(Igray); B = abs(dIx) - abs(dIy); % Low-Pass Filtering H = fspecial('gaussian', 20, 10); C = imfilter(B, H); C = imclearborder(C); figure(),imagesc(C);colorbar

5
MATLABコードを介した圧縮センシング
圧縮センシングのトピックは初めてです。R.Baranuik、Y.Eldar、Terence Taoなどによるいくつかの論文を読みました。これらの論文はすべて、基本的にその背後にある数学的な詳細、すなわちスパース性、RIP、L1ノルム最小化などを提供します。圧縮センシングを実現しますか? 助けてくれてありがとう。

3
ふるいは画像から特徴を抽出する良い方法ですか?
画像から特徴を抽出しようとしていますが、抽出したいポイントを取得できなかったため、画像がテンプレートと一致しません。 良い結果を得るために、SIFTを画像に適用する前に確認する必要があるチェックポイントはありますか?たとえば、テンプレート画像は次のとおりです。 ターゲット画像;

3
離散フーリエ変換:DC項は本当に何ですか?
私は現在、Matlabの離散フーリエ変換(DFT)をいじって、画像から特徴を抽出しています。私が使用している概念を完全に理解したい。私はこれなどいくつかの説明を読みましたが、これまでのところ、「DC用語」の意味を実際に説明したものはありません。私が知っているのは、DFTの k '項が次のように記述できることです。 どこ で回転因子は。 つまり、最初の項(DC項)は、周波数のない振幅です。 なぜそれがDC用語と呼ばれているのか誰かが説明できますか?「直流」との関係は?そして、DC用語の関連性は何ですか?それはいつ、何のために役立ちますか?
13 image  matlab  fft  dft 

3
画像処理コーディング
画像処理に最適な言語はどれかと思っていましたか?MATLABには優れたライブラリとユーザーコミュニティがあることがわかっています。私はそれをチェックアウトしていませんが、Pythonにもあります。 これに最も効率的な言語は何ですか?

1
葉に覆われた木の枝の再構築
枝の一部が葉で覆われている木の写真で、どのように枝をほぼ再構成しますか? スレッシュホールドして、いくつかの異なる角度で線分で開くことで、枝の可視部分を抽出できます。しかし、葉で覆われたスペースをどのように(およそ)埋めるのでしょうか? このツリーの描画から開始するとします。 画像をグレースケールとしてロードします uu = mmreadgray( 'tree2.jpg') 暗い色のしきい値。バイナリに変換します。200pxエリアの下の接続された領域を削除します vv = mmareaopen(mmbinary(mmthreshad(mmneg(uu)、200))、20) 90度、180度、135度、45度の10pxラインセグメントでvvを開きます。これらの画像を追加して、マーカー画像zzを形成します zz = mmaddm(mmaddm(mmaddm(mmopen(vv、mmseline(10、90))、mmopen(vv、mmseline(10、180)))、mmopen(vv、mmseline(10、135)))、mmopen(vv、 mmseline(10、45))) マーカー画像zzからvvの可視の四肢部分を再構成します aa = mminfrec(zz、vv) 元の画像uuの上に結果aaを表示します。手足の合理的な抽出が達成されます mmshow(uu、aa) 今、手足全体をほぼ再構築する方法についての考えをいただければ幸いです。(または上記の手順の改善)。ありがとうございました!

2
ファブリック画像内の糸の数の検出
私は画像処理の初心者ユーザーであり、布地画像の糸の数、つまり縦糸と横糸(x軸に垂直および平行な糸)を決定するプロジェクトに取り組んでいます。 私は縦糸と横糸のそれぞれの列と行の合計を取得することで糸を検出しようとしていますが、画像の焦点が合っておらずシャープではないため、機能していないようです。また、この方法は、ファブリック内の糸の配列に非常に敏感です。 可能であれば、糸の検出のためのより良いアルゴリズムを提案してください。また、キャプチャされたすべての画像に対して糸を真っ直ぐにする可能性がある場合。IMROTATEを試しましたが、画像の黒い領域が作成され、行の合計が乱れ、アルゴリズムが失敗します。 この点での助けは私にとって非常に価値があります。ありがとう。

3
ストップバンドフィルターが他の周波数を減衰させるのはなぜですか?
2トーン信号のコードは次のとおりです。ストップバンドを使用して高いトーンを除去し、信号をフィルター係数で畳み込んだ後、周波数領域で前(青)と後(赤)をプロットします。 。 このコードをMatlabに入れると、フィルターによって高い周波数が正常に削除されたことがはっきりとわかりますが、何らかの理由で低い周波数の振幅が半分にカットされ、フィルター係数の数を増やすと、曲線全体が平らになるほど、これが起こるのはなぜですか?そして、ストップバンドが外側に伝播しないように、どうすればそれを防ぐことができますか?画像とコードは次のとおりです。 fSampling = 8000; tSampling = 1 / fSampling; t = 0:tSampling:0.005; F0 = 1000; F1 = 3000; xt = sin(2 * pi * F0 * t)+ sin(2 * pi * F1 * t); ht = fir1(40、.25、 'stop'); yt = conv(xt、ht); fAxis = -4000:125:4000-125; xF = fft(xt、64); MagXF …
12 filters  matlab 

4
FFTを使用した自己相関の効率的な計算
私が利用できる唯一の加速プリミティブが(I)FFTであるプラットフォームで自己相関を計算しようとしています。でも問題があります。 MATLABでプロトタイプを作成しました。しかし、私は少し混乱しています。私はそれが次のように単純に機能すると仮定しました(これはメモリからのものですので、少し間違っている場合はおologiesびします)。 autocorr = ifft( complex( abs( fft( inputData ) ), 0 ) ) ただし、xcorr関数を使用した場合とは異なる結果が得られます。今、私は完全に自己相関の左側を取得しないことを期待しています(それは右側の反映であり、したがってとにかく必要ないため)。ただし、問題は、右側が中間点の周りに反映されているように見えることです。これは事実上、私が期待しているデータの約半分の量を取得することを意味しています。 だから私は非常に単純な間違ったことをしなければならないと確信していますが、私は何を理解できないのです。

5
相互相関を使用したオシロスコープ信号の時間遅延推定
スコープから2つの信号を記録しました。次のようになります。 Matlabでそれらの間の時間遅延を測定したい。各信号には、サンプリング周波数が2001000.5の2000個のサンプルがあります。 データはcsvファイルにあります。これは私がこれまで持っているものです。 電圧レベルのみがcsvファイルに含まれるように、csvファイルから時間データを消去しました。 x1 = csvread('C://scope1.csv'); x2 = csvread('C://scope2.csv'); cc = xcorr(x1,x2); plot(cc); これにより、次の結果が得られます。 私が読んだことから、これらの信号の相互相関を取る必要があり、これは時間遅延に関連するピークを与えるはずです。しかし、これらの信号の相互相関を取ると、2000年にピークが得られますが、これは正しくないことがわかります。これらの信号を相互相関させる前に、これらの信号に対して何をすべきですか?ある方向を探しています。 編集:DCオフセットを削除した後、これは私が今得ている結果です: より明確な時間遅延を得るためにこれをクリーンアップする方法はありますか? 編集2:ファイルは次のとおりです 。http://dl.dropbox.com/u/10147354/scope1col.csv http://dl.dropbox.com/u/10147354/scope2col.csv

3
デジタルフィルターのフィルター係数は何を表していますか?
matlabのfdatoolを使用してデジタルフィルターを設計し、ツールからフィルター係数を取得しました。 問題は、4次フィルターを設計したことです。これは私に5つのフィルター値を与えました h[] = {0.1930,0.2035,0.2071,0.2035,0.1930} x[k] = Discrete time input signal 公式を使用して Output = h[k]*x[n-k]; 出力は最終的なフィルター処理された値を表しますが、結果はうまくいきますが、これらの係数がmatlabによってどのように取得され、単なる乗算(畳み込み)がサンプルの最終的なフィルター処理された応答をどのように与えるかはわかりません。 任意のリンクまたは説明が行います。フィルター係数計算の完全なバックエンド動作を知りたい。 どこかに疑問がある場合は、コメントしてください。 ありがとう:)
12 filters  matlab 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.