Цитата:
Думаю, что простое применение логарифмической или другой подходящей фиксированной шкалы всё же создаст неудобство такого плана (квадратичную не рассматриваю, т.к. она, судя по её поведению, тут неприменима - но всё равно надо сначала поглядеть на график изменений изображения с ростом K):
Вот взяли некоторый набор коэффициентов k(n), а с ним пик скорости визуальных изменений не на нуле коэффициента K, а сильно в стороне. Однако, наложенная функция, ежели она фиксированная, всегда имеет пик на нуле, и тогда более тонкая настройка работает там, где не нужна - а в области с максимальным влиянием K изменения остаются грубыми. Т.е., остаётся нерешённой проблема совмещения пиков. Либо надо возиться с коэффициентами k[n], подбирая их ещё и такими, чтобы этот пик оказался на нуле, а не уехал... У логарифмической функции есть ещё один недостаток: надо как-то обрабатывать значение, при котором K стремится к бесконечности.
Что-то чем дальше обсуждение, тем меньше я понимаю
О каком пике визуальных изменений идет речь, и вообще зачем нам нужен этот пик? Нам ведь не нужно превратить изображение в негатив, или эмулировать функцию Find Edges?
Цитата:
Про "топологию" пока что не очень понял...
Это так важно? Но то, что над K надо ещё подумать - это верно!
Дело в том, что при данном поведении k(n) результат определяется не абсолютными их значениями, а соотношением между ними.
То есть, скажем, кернель (16,16, 8, -8, -4, -2) абсолютно идентичен кернелю (8, 8, 4, -4, -2, -1).
Но если K, скажем, будет равен 1, а не нулю, то кернели превратятся в (17, 17, 9, -7, -3, -1) и (9,9,5,-3,-1,0), то есть изменятся в зависимости от АБСОЛЮТНЫХ значений k(n), что мне очень не нравится.
Цитата:
0. Присваиваем индекс n=0 в массиве результатов сравнений D[0..max]
1. Берём значение K=min и получаем первый ресайз R0
2. Берём значение K=K+1 и получаем второй ресайз R1
3. Сравниваем ресайзы (R1-R0) и запоминаем результат D[n]
4. Присваиваем R0=R1 (R1 теперь можно перезаписать) и увеличиваем индекс n=n+1
5. Ежели K=max - то выходим, иначе переходим к пункту 2
Можно немного упростить жизнь и ускорить работу добавлением вспомогательного "переключателя" i (тогда не переприсваивается R0=R1, а происходит попеременное использование то R[0], то R[1], с сохранением правильного знака D[n], если он нужен - но, вообще-то, и модуля достаточно):
0. Присваиваем индексы: n=0 в массиве результатов сравнений D[0..max] и i=1
1. Берём значение K=min и получаем первый ресайз R[0]
2. Берём значение K=K+1 и получаем второй ресайз R[i]
3. Сравниваем ресайзы (R[i]-R[1-i]) и запоминаем результат D[n]
4. Переключаем i=1-i и увеличиваем индекс n=n+1
5. Ежели K=max - то выходим, иначе переходим к пункту 2
В результате имеем массив D[0..max] относительных разниц (приращений) между соседними изображениями (по шагам K), график которых уже можно как-то интерпретировать. Или лучше не заморачиваться с массивом, а просто дописывать очередное значение в файл...
По крайней мере, вид графика точнее всего подскажет, какой функцией выравнивать масштаб и насколько далеко плавает пик скорости визуальных изменений на картинках в зависимости от вариаций коэффициентов k[n]. График K-D (если K по оси абсцисс) должен начинаться с почти горизонтальной линии, расположенной примерно при D=0, потом в каком-то месте (ну, в районе K=0) он заметно поползёт вверх или вниз, потом резко изменит направление и знак (или не знаю, что там произойдёт, может заскачет
- но D меняться будет быстро!), а потом опять вернётся к примерно D=0.
Надеюсь, что язык Мейстера позволит опроцедурить такие вещи...
Совершенно не понял, как это сделать практически, а главное, зачем.
Допустим, мы наделаем max картинок, каждая из которых представляет из себя результат попиксельного вычитания, допустим, сохраним все это в файл (ох и здоровенный же он получится), но что дальше? Как интерпретировать полученные данные? Чтобы найти, на какое значение К приходится пик визуальных изменений, все это не требуется -- пик приходится на то значение, при котором коэффициенты "гасят" друг друга. Нам же нужно найти не область максимальных изменений, а область наиболее точной аппроксимации.
Дима, я боюсь, что на задачу, изложенную выше, мне не хватит терпения и умения, тем более я по-прежнему не вижу в этом пользы.
Давайте лучше пока вообще проигнорируем K, a лучше просто придумаем оптимальный кернель при K=0? Если мы его придумаем, должно стать понятнее, по какой функции лучше всего изменять K, и нужно ли вообще.
Цитата:
Так вот такого рода ноу-хау, по-моему, народу и нужно - некоторые подсказки, обнаруженные закономерности, "устаканившиеся" приёмы работы!
Наверное, было бы хорошо какой-нить ReadMe.txt в зип добавить...
Как говорится, чем могу.
Мне просто хотелось, чтобы кто-нибудь с более "математическими" мозгами подсказал ряд чисел, которые наиболее точно апроксимируют Lanczos. Метод тыка привел к неплохим результатам, но это не совсем то, что хотелость бы.