- Чтобы детектить диагональный градиент надо просто уметь детектить одновременно вертикальный и горизонтальный и пересекать их
- Воспользуемся идеей из поиска наибольшей нулевой подматрицы (https://e-maxx.ru/algo/maximum_zero_submatrix)
- Вместо нулевой области у нас градиент, поэтому нужно хранить намного больше инфы + не только горизонтальный стек (как в оригинале) но и вертикальный
- ???
- Profit
Таким образом, умеем детектить цветные/черно-белые градиенты, направленные под любым углом.
Асимптотика по времени/памяти - O(размер изображения).
Как запустить: g++ --std=c++17 main.cpp -O3 -o gradient_finder mkdir images python3 reader.py
Результат на тестовых изображениях будет лежать в папке images.
Можно reader.py поправить, попробовать какие-то другие градиенты поискать.