Самый легкий метод должен создать теги таблица.
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]
Выбор того или иного фильтра для обработки изображений - это что-то вроде черного искусства, потому что главный критерий оценки результата субъективен: в компьютерной графике главный вопрос почти всегда: «хорошо ли это выглядит?». Есть много хороших фильтров, и выбор между лучшим часто сводится к суждению.
Тем не менее, я продолжу немного теории ...
Поскольку вы знакомы с анализом Фурье для обработки сигнала вам действительно не нужно знать намного больше, чтобы применить его к обработке изображений - все фильтры, представляющие непосредственный интерес, являются «разделяемыми», Это в основном означает, что вы можете применять их независимо в направлениях 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...]
. Обратите внимание, что в этом нет никакой магии. Доступен широкий выбор окон, которые примерно так же работают. Кроме того, для a = 1 и 2 частотная характеристика не очень похожа на ступенчатую функцию. Однако я надеюсь, что это ответит на ваш вопрос «почему sinc» и даст вам некоторое представление о частотных характеристиках и так далее.
) также приглушить звон; они значительно улучшают как артефакты восприятия, так и практическую частоту «недоработок» - хотя и не устраняя их полностью. Обратите внимание, что в этом нет никакой магии. Доступен широкий спектр окон, которые почти тоже работают. Кроме того, для a = 1 и 2 частотная характеристика не очень похожа на ступенчатую функцию. Однако я надеюсь, что это ответит на ваш вопрос «почему sinc» и даст вам некоторое представление о частотных характеристиках и так далее.
) также приглушить звон; они значительно улучшают как артефакты восприятия, так и практическую частоту «недоработок» - хотя и не устраняя их полностью. Обратите внимание, что в этом нет никакой магии. Доступен широкий спектр окон, которые почти тоже работают. Кроме того, для a = 1 и 2 частотная характеристика не очень похожа на ступенчатую функцию. Однако я надеюсь, что это ответит на ваш вопрос «почему sinc» и даст вам некоторое представление о частотных характеристиках и так далее.
для a = 1 и 2 частотная характеристика не очень похожа на ступенчатую функцию. Однако я надеюсь, что это ответит на ваш вопрос «почему sinc» и даст вам некоторое представление о частотных характеристиках и так далее. для a = 1 и 2 частотная характеристика не очень похожа на ступенчатую функцию. Однако я надеюсь, что это ответит на ваш вопрос «почему sinc» и даст вам некоторое представление о частотных характеристиках и так далее.