Есть мнение ограничить максимальный размер IntegralImage неким значением (каким? обсуждаемо.) в операциях порога и цветных фильтрах. При больших изображениях генерировать интегральные изображения по кратковременным уменьшенным в q раз изображениям.
unsigned long int size_orig = h * w;
unsigned int q = 1;
if (size_orig > size_max)
{
float qf = sqrt((float) size_orig / size_max);
q = (int) qf;
if (q < qf) q++;
}
wq = (w + q - 1) / q;
hq = (h + q - 1) / q;
И обращаться к таким интегральным изображениям по простым образом квантованным индексам и размеру окна:
IntegralImage<uint32_t> integral_image(wq, hq);
IntegralImage<uint64_t> integral_sqimage(wq, hq);
window_size_q = window_size / q;
...
for (int y = 0; y < h; ++y)
{
int yq = y / q;
for (int x = 0; x < w; ++x)
{
int xq = x / q;
...
Значения среднего и скв.отклонения станут приближёнными, но для большинства методов это приемлемо. Зато расход памяти станет строго ограничен, независимо от разрешения исходного изображения.
Остаётся только понять, как быстро и без заморочек произвести ресайз GrayImage по размерам (w,h)->(wq,hq).
Hi all, @plzombie , @noobie-iv ,...
Есть мнение ограничить максимальный размер
IntegralImage
неким значением (каким? обсуждаемо.) в операциях порога и цветных фильтрах. При больших изображениях генерировать интегральные изображения по кратковременным уменьшенным в q раз изображениям.И обращаться к таким интегральным изображениям по простым образом квантованным индексам и размеру окна:
Значения среднего и скв.отклонения станут приближёнными, но для большинства методов это приемлемо. Зато расход памяти станет строго ограничен, независимо от разрешения исходного изображения.
Остаётся только понять, как быстро и без заморочек произвести ресайз
GrayImage
по размерам (w,h)->(wq,hq).