cで簡単なぼかし効果を作ろうとしています。RGB ピクセルの 512*512 配列に読み込まれた画像があり、その画像をぼかすために 3x3 カーネルを使用しています
ここにカーネルがあります
float matrix[9] = {1.0f/9.0f, 1.0f/9.0f, 1.0f/9.0f, 1.0f/9.0f, 1.0f/9.0f, 1.0f/9.0f, 1.0f/9.0f, 1.0f/9.0f, 1.0f/9.0f};
これがぼかしを行っているコードです
void useBlur(){
for(int i = 0; i < ARRAY_SIZE; i++){
float r = 0;
float g = 0;
float b = 0;
int m, n;
for(int y = -1, m = 0; y <= 1; y++, m++){
for(int z = -1, n = 0; z <= 1; z++, n++){
r += (float)orig_image[i + 512 * y + z].r * (float)matrix[m*3+n];
g += (float)orig_image[i + 512 * y + z].g * (float)matrix[m*3+n];
b += (float)orig_image[i + 512 * y + z].b * (float)matrix[m*3+n];
}
}
image[i].r = r;
image[i].g = g;
image[i].b = b;
}
}
そのコードの何が問題なのかはわかりませんが、結果が生成されています:
色が間違っている理由はありますか?そして、それを修正する方法は?
編集: マトリックス [7] を 9.0/9.0 から 1.0/9.0 に修正し、新しい画像をアップロードしました