0

OpenCV C API を使用しています。ここで、OpenCV を使用して C で次の Matlab コードを実装する必要があります。

Matlab コード:

function [cx, cy] = foe(Vx, Vy)

ofs = 10;

% get sub image (using offsets at border) --> STEP 1
subVx = Vx(ofs:end-ofs, ofs:end-ofs);
subVy = Vy(ofs:end-ofs, ofs:end-ofs);

% compute vertical and horizontal magnitudes --> STEP 2
subVx = subVx.^2;
subVy = subVy.^2;

% find index of minimum sums for vertical and horizontal magnitudes --> STEP 3
[v, cy] = min(sum(subVx'));
[v, cx] = min(sum(subVy));

% Calculate the Focus Of Expansion --> STEP 4
cy = cy + ofs;
cx = cx + ofs;

ステップ 1 は非常に簡単に実行できます。画像のROIを設定しただけです。

ステップ 2 では、IplImage の imageData 要素の各要素を次のように 2 乗する必要があります。

for(i = 0; i < subvx->width * subvx->height; i++) {
    ?????
}

?????? の代わりに何を書けばいいですか?imageData の各要素を二乗するには? imageData は char* であるため、各要素の最大制限は 255 になります。各要素の二乗は、この値を超える可能性が高くなります。

この場合、上記の Matlab コードを C で実装するにはどうすればよいですか?

また、手順 3 では、imageData の転置 (2 次元行列と見なされる) を作成するにはどうすればよいですか?

4

0 に答える 0