Простой анализ изображений - PullRequest
1 голос
/ 28 августа 2011

Я ищу метод, программное обеспечение или библиотеку для простого анализа изображений.

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

Мне нужно создать файл .txt, который представляет координаты этих точек.То есть, если на изображении три точки, на выходе будет текстовый файл, который каким-то образом включает представление трех координат (x1, y1), (x2, y2) и (x3, y3).

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

Мне сказали, что написать код для этой миссии в MATLAB легко,но я не знаком с MATLAB.

Можно ли это легко сделать с C ++, Java или C #?

Есть ли хорошие библиотеки?

Ответы [ 5 ]

1 голос
/ 28 августа 2011

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

Что касается библиотек, то все, что угодно, кроме как что-то для декодирования вашего ввода в виде такой матрицы (например, декодер JPEG), было бы излишним.

0 голосов
/ 28 августа 2011

Формат растрового файла довольно легко читается.

http://en.wikipedia.org/wiki/BMP_file_format

Вы можете просто передать байты в массив, используя эту информацию. Я написал несколько читателей BMP; это тривиальный вопрос.

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

0 голосов
/ 28 августа 2011

Библиотека CImg shold вам в помощь. От CImg FAQ :

1,1. Что такое библиотека CImg?

Библиотека CImg - это набор инструментов C ++ с открытым исходным кодом для обработки изображений.

Он в основном состоит из (большого) файла с одним заголовком CImg.h, обеспечивающего набор классов и функций C ++, которые могут быть использованы в ваших собственных источниках, загружать / сохранять, управлять / обрабатывать и отображать общие изображения. Это на самом деле очень простой и приятный инструментарий для кодирования материалов обработки изображений в C ++: просто включите заголовочный файл CImg.h, и вы готовы обрабатывать изображения в ваших программах на C ++.

0 голосов
/ 28 августа 2011

Это то, что вам должно быть очень легко обойтись без какого-либо внешнего программного обеспечения;что-то вроде

for(y in [0..height]) {
   for(x in [0..width]) {
       if(pixels[y][x].color == BLACK)
           print("(%d, %d)", x, y);
   }
}

будет работать.

0 голосов
/ 28 августа 2011

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

Например, если вы ожидаете формат файла JPG, вы просто рассчитаете заполнение для каждой строки развертки и достигнете каждой строки сканирования по одному, и каждый пиксель в строке один за другим. Вам придется использовать два счетчика, один для строки и один для столбца. Если пиксель просто не белый, то у вас есть координата

...