zgemm
Что если аппроксимировать исходное двумерное поле плоскостью по некоторой окрестности каждого пикселя, и вектор коэффициентов плоскости считать градиентом?
это хорошая идея, но пока у меня там 10 операций на пиксель на цвет/интенсивность получается, то есть чуть лучше, чем через рекуррентный почти-Гаусс фильтр, где 11 операций, но это все только на каждый цвет или яркость. То есть все равно хочется еще быстрее.
Тут разве только аппроксимировать не плоскостью, а поверхностью второго порядка, но строить такую поверхность не на каждый пиксель, а с шагом в 2-3 пикселя, но там все то же за 10 операций на пиксель получается.
zgemm
Если есть пиксели, у которых градиент яркости равен нулю, то брать два поля (допустим, яркость в палитре hsv и оттенок в палитре cielab) и из 2-х градиентов оставлять максимальный.
Вот тут сомневаюсь, что тут все будет идеально или я Вас правильно понял,
1. cielab довольно сложная палитра и для конвертации в нее мне надо будет ну очень много арифметических операций,
2. в реальных картинках часто градиент яркости может быть маленьким, но градиент цвета - большим, тут на уровне да-нет нельзя так сразу переключаться. Нужна какая-то разумная норма, но если ее считать постфактум после того, как обрабатывать каждый цвет, то все будет ужасно плохо, и потребуется 32 арифметические операции на пиксель, что для меня не приемлемо.
То есть я предполагаю, что можно что-то изначально с пикселем сделать (получить какую-то интегральную характеристику по парам соседних пикселей в RGB) и вот потом эту интегральную характеристику уже начинать аппроксимировать дальше, но пока не придумал как.
Грубо говоря, в голове вертится мысль посчитать
что само по себе уже будет составлять 17 операций, но потом как-то это сгладить гауссом или еще как-то, но вот такой метод хоть и улучшит скорость с 32 арифметических операций до 20 примерно, но, во-первых, хочется быстрее, во-вторых, сглаживать после взятия производной как-то вроде не правильно, надо наоборот.