#1
by poket » 5年前
C++についての質問です 画像処理を行う際のSoA変換をスカラーで行いたいのですが下記コード該当部分の実装がよくわかりません ご教授していただけると嬉しいです。
コード:
void SOA(const Image_32F& src, Image_32F& dest, const int r)
{
Image_32F temp_32f;
copyMakeBorder(src, temp_32f, r, r, r, r);
const float wsum = (float)((2*r+1)*(2*r+1));
if (src.channels == 3)
{
Image_32F splitImg[3];
split(temp_32f, splitImg);
Image_32F destSplitImg[3] = { Image_32F(src.rows, src.cols, 1), Image_32F(src.rows, src.cols, 1), Image_32F(src.rows, src.cols, 1) };
for (int y = 0; y < src.rows; y++)
{
for (int x = 0; x < src.cols; x++)
{
float sum[3] = { 0 };
for (int j = -r; j <= r; j++)
{
for (int i = -r; i <= r; i++)
{
//sum処理
//ここを実装したい
}
}
//store処理
//ここを実装したい
}
}
merge(destSplitImg, 3, dest);
}
else if (src.channels == 1)
{
//gray image
std::cout << "not support gray image" << std::endl;
return;
}
C++についての質問です 画像処理を行う際のSoA変換をスカラーで行いたいのですが下記コード該当部分の実装がよくわかりません ご教授していただけると嬉しいです。
[code]
void SOA(const Image_32F& src, Image_32F& dest, const int r)
{
Image_32F temp_32f;
copyMakeBorder(src, temp_32f, r, r, r, r);
const float wsum = (float)((2*r+1)*(2*r+1));
if (src.channels == 3)
{
Image_32F splitImg[3];
split(temp_32f, splitImg);
Image_32F destSplitImg[3] = { Image_32F(src.rows, src.cols, 1), Image_32F(src.rows, src.cols, 1), Image_32F(src.rows, src.cols, 1) };
for (int y = 0; y < src.rows; y++)
{
for (int x = 0; x < src.cols; x++)
{
float sum[3] = { 0 };
for (int j = -r; j <= r; j++)
{
for (int i = -r; i <= r; i++)
{
//sum処理
//ここを実装したい
}
}
//store処理
//ここを実装したい
}
}
merge(destSplitImg, 3, dest);
}
else if (src.channels == 1)
{
//gray image
std::cout << "not support gray image" << std::endl;
return;
}
[/code]