2015-02-09 2 views
1

Я хотел бы обнаружить области изображения, которые содержат сравнительно большое количество мелких деталей, но в равной мере мне нужно игнорировать сильные края. Например, я хотел бы (приблизительно) идентифицировать области небольшого текста на плакате, который находится на здании, но я также хочу игнорировать сильные края самого здания.Обнаружение наличия мелких деталей на изображении

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

Чтобы ответить на вопрос в комментариях ниже, я разрабатываю в Matlab

Я открыт для любых предложений о том, как достичь этого - спасибо!

+5

Я не специалист по обработке изображений, но такие звуки звучат как одна из проблем «Мне понадобятся пять лет и исследовательская группа». – Kevin

+0

хорошо, что сделал меня LOL! – trican

+0

На какой платформе вы работаете? У Matlab есть много этой функциональности, которая легко доступна. На самом деле, даже если вы этого не сделали, разработка в Matlab, а затем перевод функций на ваш предпочтительный язык - лучший выбор. Далее я отредактирую свой ответ с еще несколькими моментами, которые могут привести вас в правильном направлении. – Sipty

ответ

3

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

enter image description here

и использовать отличные, свободные ImageMagick разделить его на плитки 400x400 пикселей, как это:

convert -crop 400x400 cinema.jpg tile%d.jpg 

Теперь я измерить энтропию каждой плитки, и сортировать по возрастающей энтропии:

for f in tile*.jpg; do 
    convert $f -print '%[entropy] %f\n' null: 
done | sort -n 

и я получаю эту outoput:

0.142574 tile0.jpg 
0.316096 tile15.jpg 
0.412495 tile9.jpg 
0.482801 tile5.jpg 
0.515268 tile4.jpg 
0.534078 tile18.jpg 
0.613911 tile12.jpg 
0.629857 tile14.jpg 
0.636475 tile11.jpg 
0.689776 tile17.jpg 
0.709307 tile10.jpg 
0.710495 tile16.jpg 
0.824499 tile6.jpg 
0.826688 tile3.jpg 
0.849991 tile8.jpg 
0.851871 tile1.jpg 
0.863232 tile13.jpg 
0.917552 tile7.jpg 
0.971176 tile2.jpg 

Итак, если я посмотрю на последние 3 (т.те, с большей энтропией), я получаю:

enter image description here enter image description here enter image description here

+0

Использование энтропии - интересная идея - и может легко быть в состоянии на любом перекрывающемся блоке NxM – trican

+0

Это довольно легко, и вы можете сделать это прямо в командной строке без необходимости компилировать что-либо. Он установлен на многих Linux и доступен также для Windows и OS X - в идеале через 'homebrew'. –

+0

Будет ли этот подход еще точным для цветных изображений? – Sipty

1

Вопрос сам по себе слишком широк для достойного ответа на моей стороне. При этом я могу предложить вам несколько советов по сужению вопроса.

Прежде всего, перейдите на страницу Google Scholar и найдите ключевые слова, в которых работает ваша работа. В вашем случае одним из них, вероятно, будет обнаружение края.

Просмотрите последние документы (не более 5 лет) для работы, которая удовлетворяет ваши потребности. Если вы ничего не найдете, раскройте критерии поиска или попробуйте разные термины.

Если у вас есть что-то более конкретное, отредактируйте свой вопрос и дайте мне знать.

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

EDIT: Из того, что я собрал, вас интересует алгоритм обнаружения границ и выбора функций? Вот несколько полезных ссылок, которые могут оказаться полезными:

-MATLAB feature detection -MATLAB edge detection

Также этот MATLAB edge detection write up, которая является частью их обширной направляющей документации, мы надеемся доказать, достаточно полезным для вас, чтобы вырыть через Matlab image processing toolbox. документацию для конкретных ответов на ваш вопрос.

+0

Я думаю, что это самый общий ответ, когда-либо, и он, безусловно, не отвечает на вопрос. – amit

+0

Я согласен с тем, что он прямо не отвечает на вопрос, но, похоже, это хороший совет относительно решения проблем в целом. – Kevin

+0

@amit И целенаправленно так. Единственный ответ на вопрос ОП - «Да». и посмотрите на свое ближайшее руководство по обработке изображений. Я даю ответ, который указывает OP в правильном направлении, так как на самом деле нет другого * жизнеспособного * ответа на текущий вопрос. – Sipty

1

Вы найдете Maximally Stable Экстремальные Регионы (MSER) полезно для этого. Вы должны уметь ограничить область, чтобы отфильтровать большие MSER, а затем вычислить плотность MSER, например, как Марк сделал в своем ответе, разделив изображение на плитки.