問題タブ [convolution]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - 畳み込み行列はどのように機能しますか?
これはプログラミングとあまり関係がないことはわかっていますが、PHP GD 関数で畳み込み行列がどのように機能するかを知る必要があります。Google でいろいろ検索しましたが、うまく説明できるものは見つかりませんでした。
python - Pythonとnumpyを使用した2D畳み込み
numpyを使用してPythonで2D畳み込みを実行しようとしています
次のような2D配列があり、行にはカーネルH_r、列にはH_cがあります。
それは私が期待していた出力を生成しません、このコードは大丈夫に見えますか、問題はfloat32から8ビットへのキャストにあると思います。これを行うための最良の方法は何ですか
ありがとう
openmp - OpenMP + SSE はスピードアップしない
私の教授は、SSE と OpenMP を使用した 3D 線形分離可能なカーネル畳み込みのこの興味深い実験を発見し、私たちのシステムの統計をベンチマークするタスクを私に与えました。著者は、シリアル アプローチから 18 倍のスピードアップを達成したと主張しています。常にではないかもしれませんが、これをデュアル コア Intel で実行すると、少なくとも 2 ~ 4 倍のスピードアップが期待されていました。
残念ながら、スピードアップはまったく見つかりませんでした。OpenMP の有無にかかわらず、シリアル コードのパフォーマンスは常に向上します。
私は Linux を使用していますが、特定の傾向を観察しました...システムで他のプロセスが実行されていない場合、しばらくすると loadavg が増加し始め、%CPU 使用率が低下します。
私が誤って遭遇した別の誤検知の可能性...私はプログラムを開始し、すぐに一時停止しました。次に、bg を使用してバックグラウンドで実行したところ、2 倍以上のスピードアップが見られました。これは常に発生します。
どんなアドバイスも素晴らしいでしょう。
ありがとう、サヤン
signals - 2つの信号の畳み込み
次の信号の畳み込みを計算します(答えは方程式の形になります)。
h[n] = δ[n-1] + δ[n+1], x[n] = δ[n-a] + δ[n+b]
私はhとxで何をするのか迷っています。単に掛けるだけですか?h [n] * x [n]?いくつかのタイプのブラーとエッジ検出器を使用して畳み込みをプログラムしましたが、その知識をこの問題に変換する方法がわかりません。助けてください!
c - 多次元配列のエッジ/境界条件
次のように、各ピクセルに 3x3 フィルターを適用するために、3 次元配列 (各ピクセルに 3 つの値を持つ画像) を反復処理しています。
ポインター演算を使用しているのは、配列表記を使用すると 4 つのループがあり、ループの数をできるだけ少なくしようとしているからです。私の問題は、notOutsideEdgesCondition
8つの境界ケースを考慮する必要があるため、かなり手に負えなくなっていることです. 私は次の処理条件を持っています
- 左の列:
((i%width)==0) && (j%3==0)
- 右の列:
((i-1)%width ==0) && (i>1) && (j%3==2)
- 上段:
(i<width) && (j<2)
- 下段:
(i>(width*height-width)) && (j>5)
式が長くなる 4 つのコーナー ケースを考慮する必要があります。この時点で、私は立ち止まって、これが最善の方法であるかどうかを自問しました.5行の条件付き評価がある場合、デバッグが本当に面倒であるだけでなく、内部ループが遅くなるからです. そのため、このケースを処理する既知のアルゴリズムがあるかどうか、または私の問題に対するより良いアプローチがあるかどうかを尋ねに来ました. どうもありがとう。
functional-programming - Clojureでの怠惰な畳み込みfnの問題
私はいくつかの信号処理ソフトウェアを書いています、そして私は離散畳み込み関数を書き出すことから始めています。
これは最初の1万程度の値のリストでは問題なく機能しますが、値が大きくなると(たとえば、100k)、もちろんStackOverflowエラーが発生し始めます。
残念ながら、私は命令型畳み込みアルゴリズムを、実際に使用するのに十分高速な再帰的で怠惰なバージョンに変換するのに多くの問題を抱えています(少なくとも少しの優雅さもあればいいでしょう)。
また、この機能が完全に正しいかどうかも100%確信していませんが、何かが足りない、または何か間違ったことをしている場合はお知らせください。正しいと思います。
私はどんな種類の助けも必要です。私はまだClojureで自分の方向性を理解しており、これをエレガントで怠惰なものにしたり、再帰的にしたりするのは素晴らしいことです。
Lispで命令型言語で表現するのが非常に簡単なアルゴリズムを表現するのがどれほど難しいか少し驚いています。しかし、おそらく私はそれを間違っています!
編集: 命令型言語で表現するのがいかに簡単であるかを示し、人々にうまく機能し、読みやすいアルゴリズムを提供するために、ここにPythonバージョンがあります。短く、簡潔で、推論がはるかに簡単であることに加えて、Clojureコードよりも桁違いに高速に実行されます。Java配列を使用する私の必須のClojureコードですら。
一方、ここに命令型のClojureコードがあります。また、畳み込みから最後の、完全に没頭していない値を削除します。したがって、遅くて醜いことを除けば、100%機能するわけではありません。機能的でもありません。
これはとてもがっかりします。誰かが私に何か明らかなことを見逃したことを見せてください。
編集3:
これが昨日私が考えた別のバージョンで、それをどのように表現できるようにしたいかを示しています(他のソリューションは非常にエレガントですが、私は別のソリューションを公開しています!)
このユーティリティ関数を使用しますvec-add
:
image-processing - ガウスぼかしと畳み込みカーネル
畳み込みカーネルとは何か、画像内のピクセルに畳み込み行列を適用する方法がわかりません(画像に対してガウスぼかし演算を実行することについて話しています)。
また、ガウスぼかし操作用のカーネルを作成する方法についての説明を得ることができますか?
私はこの記事を読んでいますが、物事がどのように行われているのか理解できないようです...
これを私に説明するのに時間を割いてくれた人に感謝します:)、
ExtremeCoder
opencv - OpenCV:エリア内の黒から白へのグラデーションを検出します
理解を深めるためにサンプル画像をアップロードしました:http://www.imagebanana.com/view/kaja46ko/test.jpg
画像では、いくつかのスキャンラインとマーカー(円が入った白いリタングル)を見ることができます。OpenCVを、5x5程度の指定された領域(スキャンラインで概説されている例)に沿って移動させたいと思います。その領域に黒から白へのグラデーションが含まれている場合は、後で作業できるように、OpenCVにその領域の位置を保存してもらいたいと思います。
最終的な結果は、マーカーと、黒と白の線で区切られた他のリタングルを区別することです。
そのようなことは可能ですか?私はたくさんグーグルで検索しましたが、エッジ検出器しか見つかりませんでしたが、それは私が望んでいることではありません。本当に必要なのは、黒から白へのグラデーションのみです。
前もって感謝します。
matlab - 問題を引き起こすmatlabの書き込み畳み込み関数
こんにちは、関数に相当する matlab を書くのに苦労していconv(x,y)
ます。これが間違った出力を与える理由がわかりません。配列
x1 = [1 2 1]
とx2 = [3 1 1]
.
これが私が持っているものです
matlab conv(x1,x2)
は3 7 6 3 1
出力として提供しますが、これは私3 5 6 6 6
に答えを与えています。どこで間違ったのですか?
また、私は Opera mini で書式設定を行って申し訳ありません。
php - PHPシャープネス畳み込みマティックス
PHP GDのシャープネスに畳み込み行列を使用しており、シャープネスの「レベル」を変更したいと思います。
多かれ少なかれシャープにしたい場合、どこでこれを変更しますか?