изображение — реализация размытия среднего фильтра c ++

Я пытаюсь написать свой собственный код для размытия среднего фильтра.
У меня есть класс с именем FilterBlur, который содержит оператор << который будет применять фильтр к изображению, переданному в качестве аргумента. В моем коде нет ошибок, но фильтр не применяется должным образом

В моем коде «изображение» — это объект класса с именем Image с функциями-членами setVector, который устанавливает триплет rgb в пикселе x, y и getVector, который дает цвет rgb пикселя x, y.
«Математика :: Vec3<‘float’> «это шаблонный класс, чьи объекты содержат триплет значений, в данном случае это цвет rgb. Также N, N — размеры ядра.

Image operator<<(const Image& image) {
*image2 = image;
int w = (int)image2->getWidth();
int h = (int)image2->getHeight();for (int y = 0; y <h; y++)
{
for (int x = 0; x < w; x++)
{
math::Vec3<float> sum(0);

for (int fx = -N/2; fx <= N / 2; fx++){
for (int fy = -N / 2; fy <= N / 2; fy++)
{
int tx = x + fx;
int ty = y + fy;
sum += image2->getVector(tx, ty);
}
}
sum = sum / N / N;
image2->setVector(x, y,sum);
}
}
return *image2;
}

Может ли кто-нибудь помочь мне найти, что не так в моей реализации размытия?
Я считаю, что проблема должна быть в приведенном выше коде, поскольку класс Image, Vec3 и т. Д. Работают нормально, когда я использую их в реализации других фильтров, но я проверю их еще раз, если в приведенном выше коде нет проблем.

Я также загружаю изображение с проблемным размытым изображением.
Любая помощь будет оценена!

образ

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector