какова идея позади масштабирования изображения с помощью lanczos?

Самый легкий метод должен создать теги таблица.
Target_Type - в случае, если Вы отмечаете несколько таблиц
Target - ключ к записи, отмечаемой
Tag - текст тега

, Запросы данных были бы чем-то как:

Select distinct target from tags   
where tag in ([your list of tags to search for here])  
and target_type = [the table you're searching]

ОБНОВЛЕНИЕ
На основе Вашего требования к И условий, запрос выше превратился бы во что-то вроде этого

select target
from (
  select target, count(*) cnt 
  from tags   
  where tag in ([your list of tags to search for here])
    and target_type = [the table you're searching]
)
where cnt = [number of tags being searched]
25
задан Juha Syrjälä 8 May 2010 в 09:10
поделиться

1 ответ

Выбор того или иного фильтра для обработки изображений - это что-то вроде черного искусства, потому что главный критерий оценки результата субъективен: в компьютерной графике главный вопрос почти всегда: «хорошо ли это выглядит?». Есть много хороших фильтров, и выбор между лучшим часто сводится к суждению.

Тем не менее, я продолжу немного теории ...


Поскольку вы знакомы с анализом Фурье для обработки сигнала вам действительно не нужно знать намного больше, чтобы применить его к обработке изображений - все фильтры, представляющие непосредственный интерес, являются «разделяемыми», Это в основном означает, что вы можете применять их независимо в направлениях x и y. Это сводит проблему передискретизации (2-D) изображения к проблеме передискретизации (1-D) сигнала. Вместо функции времени (t) ваш сигнал является функцией одной из координатных осей (скажем, x); все остальное точно так же.

В конечном счете, причина, по которой вам нужно вообще использовать фильтр, заключается в том, чтобы избежать наложения спектров: если вы уменьшаете разрешение, вам нужно отфильтровать исходные высокочастотные данные, которые новое более низкое разрешение не поддерживает, или вместо этого будет добавлен к несвязанным частотам.

Итак. Отфильтровывая нежелательные частоты из оригинала, вы хотите сохранить как можно большую часть исходного сигнала. Кроме того, вы не хотите искажать сохраняемый сигнал. В заключение, вы хотите как можно полнее погасить нежелательные частоты. Теоретически это означает, что хороший фильтр должен быть "коробчатой" функцией в частотном пространстве: с нулевым откликом для частот выше среза, единичным откликом для частот ниже среза и ступенчатой ​​функцией между ними. И теоретически такой ответ достижим: как вы, возможно, знаете, прямой фильтр sinc даст вам именно это.


С этим связаны две проблемы. Во-первых, прямой sinc-фильтр неограничен и не спадает очень быстро; это означает, что выполнение простой свертки будет очень медленным. Вместо прямой свертки быстрее использовать БПФ и выполнять фильтрацию в частотном пространстве ...

Однако, если вы действительно используете прямой фильтр sinc, проблема в том, что он на самом деле выглядит не очень хорошо! Как говорится в соответствующем вопросе, с точки зрения восприятия есть звенящие артефакты, и практически не существует полностью удовлетворительного способа справиться с отрицательными значениями, возникающими в результате "недооценки".

Наконец, тогда: один из способов справиться с проблемой - начать с помощью sinc-фильтра (из-за его хороших теоретических свойств) и настраивайте его, пока не получите что-то, что также решит ваши другие проблемы. В частности, это даст вам что-то вроде фильтра Ланцоша:

Lanczos filter:       L(x)     = sinc(pi x) sinc(pi x/a) box(|x|<a)
frequency response: F[L(x)](f) = box(|f|<1/2) * box(|f|<1/2a) * sinc(2 pi f a)

    [note that "*" here is convolution, not multiplication]
       [also, I am ignoring normalization completely...]
  • sinc (pi x) определяет общую форму частотной характеристики (для большего a частотная характеристика все больше и больше напоминает функцию ящика)
  • box (| x |
  • , sinc (pi x / a) сглаживает края коробки и (следовательно? эквивалентно?) значительно улучшает подавление нежелательных высоких частот
  • последних двух факторов («окно ") также приглушить звон; они значительно улучшают как артефакты восприятия, так и практическую частоту «недоработок» - хотя и не устраняя их полностью

. Обратите внимание, что в этом нет никакой магии. Доступен широкий выбор окон, которые примерно так же работают. Кроме того, для a = 1 и 2 частотная характеристика не очень похожа на ступенчатую функцию. Однако я надеюсь, что это ответит на ваш вопрос «почему sinc» и даст вам некоторое представление о частотных характеристиках и так далее.

) также приглушить звон; они значительно улучшают как артефакты восприятия, так и практическую частоту «недоработок» - хотя и не устраняя их полностью

. Обратите внимание, что в этом нет никакой магии. Доступен широкий спектр окон, которые почти тоже работают. Кроме того, для a = 1 и 2 частотная характеристика не очень похожа на ступенчатую функцию. Однако я надеюсь, что это ответит на ваш вопрос «почему sinc» и даст вам некоторое представление о частотных характеристиках и так далее.

) также приглушить звон; они значительно улучшают как артефакты восприятия, так и практическую частоту «недоработок» - хотя и не устраняя их полностью

. Обратите внимание, что в этом нет никакой магии. Доступен широкий спектр окон, которые почти тоже работают. Кроме того, для a = 1 и 2 частотная характеристика не очень похожа на ступенчатую функцию. Однако я надеюсь, что это ответит на ваш вопрос «почему sinc» и даст вам некоторое представление о частотных характеристиках и так далее.

для a = 1 и 2 частотная характеристика не очень похожа на ступенчатую функцию. Однако я надеюсь, что это ответит на ваш вопрос «почему sinc» и даст вам некоторое представление о частотных характеристиках и так далее.

для a = 1 и 2 частотная характеристика не очень похожа на ступенчатую функцию. Однако я надеюсь, что это ответит на ваш вопрос «почему sinc» и даст вам некоторое представление о частотных характеристиках и так далее.

35
ответ дан 28 November 2019 в 21:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: