0
#pragma omp parallel for num_threads(6)
for (int m = 0; m < k_num; m++) {
Point(0, 0) = double(data3[j * 3]) - mean1[m].at<double>(0, 0);
Point(0, 1) = double(data3[j * 3 + 1]) - mean1[m].at<double>(0, 1);
Point(0, 2) = double(data3[j * 3 + 2]) - mean1[m].at<double>(0, 2);
end = Point * inv[m] * Point.t();
distance = sqrt(end(0, 0));
if (distance < min && distance>0) {
color = m;
class_success++;
// color_map[i + left_y][j + left_x] = color;
data2[(j + left_x) * 3] = lab_k[m][0];
data2[(j + left_x) * 3 + 1] = lab_k[m][1];
data2[(j + left_x) * 3 + 2] = lab_k[m][2];
data4[j * 3] = lab_k[m][0];
data4[j * 3 + 1] = lab_k[m][1];
data4[j * 3 + 2] = lab_k[m][2];
}
}
私はイメージ内のすべてのピクセルを走査し、それらとカラーモデル間のマハラノビス距離を計算しようとします。 (i,j)
はポイント座標です。私はコードをチェックし、すべての変数は相互に関係すべきではありませんが、私がopenmpを使用すると結果は異なります。どうもありがとう。私のコードでOpenMpを使用し、エラーの結果を得る
"結果は異なる":コンピュータの浮動小数点乗算の結果は、その順序に依存します。ですから、シングルスレッドとマルチスレッドの計算の結果が異なる可能性はあります。しかし、これが唯一の理由であるかどうかは不明です。 – Micka
ありがとう、しかし、分類の違いの結果は広く、私は割り当てに問題があるかもしれないと思う、変数はプライベートまたは共有ですか?私はわかりません。 –
[cv :: Mahalanobis](https://docs.opencv.org/3.3.1/d2/de8/group__core__array.html#ga4493aee129179459cbfc6064f051aa7d)を使用してみませんか? – Nayfe