Распознавание простого объекта

Нет никакого стандарта для расположения LIST ответ. Необходимо было бы записать код для обработки самых популярных разметок. Я запустил бы с форматов Windows Server DIR и Linux ls. Существует большое разнообразие там, все же.

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

6
задан Amro 22 July 2010 в 19:48
поделиться

5 ответов

  1. Просканируйте каждый квадрат (например, сверху-слева, слева направо, сверху вниз)

  2. Когда вы попадаете в синий квадрат, тогда:

    a. Запишите этот квадрат как местоположение нового объекта

    b. Найдите все другие смежные синие квадраты (например, посмотрев на соседей этого квадрата и соседей этих соседей и т. Д.) И отметьте их как части одного объекта

  3. Продолжите сканирование

  4. Когда вы найдете еще один синий квадрат, проверьте, является ли он частью известного объекта, прежде чем перейти к шагу 2; в качестве альтернативы на шаге 2b сотрите любой квадрат после того, как вы связали его с объектом

5
ответ дан 8 December 2019 в 16:06
поделиться

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

Если бы я использовал MATLAB, Я бы использовал функции bwlabel / bwboundaries . Я считаю, что где-то в Numpy есть эквивалентная функция, или используйте OpenCV с оболочками python, как предлагает @kwatford

3
ответ дан 8 December 2019 в 16:06
поделиться

Раньше я проводил такой анализ на микрофотографиях и в конечном итоге помещал все, что мне нужно, в пакет обработки и анализа изображений, написанный на C, управляемый через Tcl. (Он работал только с изображениями 512 x 512, что объясняет, почему 512 появляются так часто. Были изображения с выделенными пикселями разного размера, но большая часть работы была сделана с 8-битными пикселями, что объясняет, почему существует такая задача 0xff и максимальное значащее число 254 на изображении.)

Вкратце, 'zz' в начале команд Tcl отправляет остаток строки синтаксическому анализатору пакета, который вызывает соответствующую подпрограмму C с заданными аргументами. Сразу после zz идет аргумент, указывающий на ввод и вывод команды. (Может быть несколько входов, но только один выход.) 'R' обозначает изображение размером 512 x 512 x 8 бит. Третье слово - это имя вызываемой команды; «графики» помечают изображение, как описано в тексте ниже. Итак, «zz rr graphs» означает «Вызвать парсер ZZ; введите изображение r в команду graphs и получите обратно изображение r. ' Остальная часть командной строки Tcl указывает, какие из предварительно выделенных образов использовать. (Изображение 'g' - это ROI, то есть изображение интересующей области; почти все операции ZZ выполняются под контролем ROI.) Итак, 'r1 r1 g8' означает 'Использовать r1 как вход, использовать r1 как выход ( то есть разметить само входное изображение) и выполнить операцию везде, где соответствующий пиксель на изображении g8 - то есть r8, используемый в качестве области интереса -> 0.

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

Пример 6. Подсчет функций.

Проблема

Подсчет - это проблема общая задача. Подсчитываемые элементы называются «характеристиками», и обычно необходимо тщательно подготовить изображения, чтобы характеристики однозначно соответствовали вещам, которые являются реальными объектами, подлежащими учету. Однако здесь мы игнорируем подготовку изображения и вместо этого рассматриваем механику подсчета. Первое упражнение по подсчету состоит в том, чтобы выяснить, сколько функций находится на изображениях в каталоге ./cells?[1254ptingApproach

Прежде всего, давайте определим «функцию». Объект - это самая большая группа «заданных» (ненулевых) пикселей, все из которых могут быть достигнуты, перемещаясь от одного заданного пикселя к другому по маршрутам север-юго-восток-запад (вверх-вниз-вправо-влево), начиная с из заданного пикселя. Команда zz, которая обнаруживает и отмечает такие особенности на изображении, называется «zz rr graphs R: src R: dest G: ROI», потому что математическим термином для такой функции является «граф». Если все пиксели на изображении заданы, тогда на изображении будет только один график, но он содержит 262144 пикселя (512 * 512). Если пиксели установлены и очищены (равны нулю) в виде шахматной доски, Если все пиксели на изображении заданы, тогда на изображении будет только один график, но он содержит 262144 пикселя (512 * 512). Если пиксели установлены и очищены (равны нулю) в виде шахматной доски, Если все пиксели на изображении заданы, тогда на изображении будет только один график, но он содержит 262144 пикселя (512 * 512). Если пиксели установлены и очищены (равны нулю) в виде шахматной доски, тогда будет 131072 (512 * 512/2) графиков, но каждый будет содержать только один пиксель. Вкратце поясняется, что «графики zz rr» начинаются в верхнем левом углу изображения и сканируют каждый в следующей строке слева направо, пока не будет найден заданный пиксель, затем будут найдены все заданные пиксели, присоединенные к нему через северную, южную, восточную или западную границы («4-соединенные»). Затем он устанавливает для всех пикселей в этом графике значение 1 (0x01). После нахождения и маркировки графа 1 он снова начинает сканирование с пикселя после того, где он впервые обнаружил граф 1, на этот раз игнорируя любые пиксели, которые уже принадлежат графу. Первые 254 найденных графа будут отмечены однозначно; однако все графики, найденные после этого, будут отмечены значением 255 (0xff) и поэтому нельзя отличить друг от друга. Ключом к возможности точного подсчета любого количества графиков является поэтапная обработка каждого изображения, то есть найти количество графиков на изображении и, если это число больше 254, стереть только что найденные 254 графика, повторяя обрабатывайте до тех пор, пока не будет найдено 254 или меньше графиков. Язык Tcl предоставляет средства для настройки управления этой операцией.

Давайте начнем создавать команды, необходимые для чтения файла изображения ZZ в образ R и обнаружения и маркировки графиков. Перед циклом обработки мы объявляем и обнуляем переменную для хранения общего количества функций в серии изображений. В цикле обработки мы начинаем с считывания файла изображения в изображение R, обнаружения и маркировки графиков.

zz ur to $inDir/$img r1
zz rr graphs r1 r1 g8

Затем мы обнуляем некоторые переменные, чтобы отслеживать счетчики, затем используйте команду «ra max», чтобы узнать, было ли обнаружено более 254 графиков.

set nGraphs [ zz ra max r1 a1 g1 ]

Если nGraphs действительно равно 255, тогда 254 точно подсчитанных графика должны быть добавлены к общему количеству, графики с 1 по 254 должны быть удалены , и счет повторяется столько раз, сколько требуется для уменьшения количества графиков ниже 255.

while {$nGraphs == 255} {
  incr sumGraphs 254
  zz rbr lt r1 155 r1 g1 0 255 
  set sumGraphs 0
  zz rr graphs r1 r1 g8
  set nGraphs [ zz ra max r1 a1 g8 ]
}

Когда цикл «while» завершается, переменная nGraphs должна содержать число меньше 255, то есть количество точных рассчитанные графики; это добавляется к возрастающему количеству элементов в серии изображений.

incr sumGraphs $nGraphs

После цикла обработки распечатайте общее количество элементов, обнаруженных в серии.

puts “Total number of features in $inDir \
images $beginImg through $endImg is $sumGraphs.”

После цикла обработки распечатайте общее количество функций, обнаруженных в серии.

затем 254 точно подсчитанных графика должны быть добавлены к общему количеству, графики с 1 по 254 должны быть стерты, а подсчет повторен столько раз, сколько потребуется для уменьшения количества графиков ниже 255.

while {$nGraphs == 255} {
  incr sumGraphs 254
  zz rbr lt r1 155 r1 g1 0 255 
  set sumGraphs 0
  zz rr graphs r1 r1 g8
  set nGraphs [ zz ra max r1 a1 g8 ]
}

Когда «время» »Цикл завершается, переменная nGraphs должна содержать число меньше 255, то есть количество точно подсчитанных графов; это добавляется к возрастающему количеству элементов в серии изображений.

incr sumGraphs $nGraphs

После цикла обработки распечатайте общее количество элементов, обнаруженных в серии.

puts “Total number of features in $inDir \
images $beginImg through $endImg is $sumGraphs.”

После цикла обработки распечатайте общее количество функций, обнаруженных в серии.

затем 254 точно подсчитанных графика должны быть добавлены к общему количеству, графики с 1 по 254 должны быть стерты, а подсчет повторен столько раз, сколько потребуется, чтобы уменьшить количество графиков ниже 255.

while {$nGraphs == 255} {
  incr sumGraphs 254
  zz rbr lt r1 155 r1 g1 0 255 
  set sumGraphs 0
  zz rr graphs r1 r1 g8
  set nGraphs [ zz ra max r1 a1 g8 ]
}

Когда «время» »Цикл завершается, переменная nGraphs должна содержать число меньше 255, то есть количество точно подсчитанных графов; это добавляется к возрастающему количеству элементов в серии изображений.

incr sumGraphs $nGraphs

После цикла обработки распечатайте общее количество элементов, обнаруженных в серии.

puts “Total number of features in $inDir \
images $beginImg through $endImg is $sumGraphs.”

После цикла обработки распечатайте общее количество функций, обнаруженных в серии.

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

incr sumGraphs $nGraphs

После цикла обработки распечатайте общее количество элементов, обнаруженных в серии.

puts “Total number of features in $inDir \
images $beginImg through $endImg is $sumGraphs.”

После цикла обработки распечатайте общее количество функций, обнаруженных в серии.

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

incr sumGraphs $nGraphs

После цикла обработки распечатайте общее количество элементов, обнаруженных в серии.

puts “Total number of features in $inDir \
images $beginImg through $endImg is $sumGraphs.”

После цикла обработки распечатайте общее количество функций, обнаруженных в серии.

3
ответ дан 8 December 2019 в 16:06
поделиться

OpenCV имеет интерфейс Python, который может вам пригодиться.

2
ответ дан 8 December 2019 в 16:06
поделиться
Другие вопросы по тегам:

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