0

以下は、画像内 のの任意の手描きの強度プロファイルです。ここに画像の説明を入力

タスクはを引くことです。プロファイルは、円弧または楕円に近似できます。これは、カメラのキャリブレーションのために行っています。私は実際の産業用カメラを持っていないので、キャリブレーションに必要な補正をシミュレートしようとしています。

上記のようなプロットに従うピクセル値が必要なため、質問を言い換えることができます。プログラムを使用して(できればopencvを使用して)これを行い、行に何千ものピクセルがあるため、これらの値を手動で入力したくありません。
アルゴリズム/疑似コードで十分です。また、実際の強度プロファイルを持っていないことに注意してください。そうでなければ、それらの値を読み取っていたでしょう.

いつそのような状況に遭遇しますか?

カメラから写真を撮り(完全な白を想定)、オブジェクトをテーブルに置き、カメラを垂直方向にその真上に置くとします。カメラから垂直に下向きに画像の中央に当たる光は、エッジで反射する光と比較して強度が強くなります。画像内の任意の線でピクセル値を測定すると、上記のような強度曲線が得られます。とりあえずカメラを持っていないので、この状況をエミュレートしたいと思います。これを達成する方法は?

4

1 に答える 1

1

これは正確には画像処理ではなく、むしろ画像生成です...とにかく。

円弧が必要なので、その円弧にはまだ 3 つのポイントが必要です。最初、中間、および最後のポイントを取得します (私の意見では重要な特徴)。

N = 100; % number of pixels
x1 = 1;
x2 = floor(N/2);
x3 = N;

y1 = 242;
y2 = 255;
y3 = 242;

次に、これらの点を含む円弧を描きます。この問題は、matlab で既にここで説明されています: http://www.mathworks.nl/matlabcentral/newsreader/view_thread/297070

x21 = x2-x1; y21 = y2-y1;
x31 = x3-x1; y31 = y3-y1;
h21 = x21^2+y21^2; h31 = x31^2+y31^2;
d = 2*(x21*y31-x31*y21);
a = x1+(h21*y31-h31*y21)/d; % circle center x
b = y1-(h21*x31-h31*x21)/d; % circle center y
r = sqrt(h21*h31*((x3-x2)^2+(y3-y2)^2))/abs(d); % circle radius

中央の値が常に大きいと仮定する場合 (したがって、プロットする必要がある円の上部です)、次のように描画できます。

x = x1:x3;
y = b+sqrt(r^2-(x-a).^ 2);
plot(x,y);

で表示ウィンドウを調整できます

xlim([1 N]);
ylim([200 260]);

次の結果が得られます。 アーク

于 2012-05-25T11:29:01.323 に答える