Найти таблицы в изображении с помощью C # - PullRequest
0 голосов
/ 04 января 2019

Я пытаюсь написать функцию, которая будет брать изображение и возвращать мне список изображений только с таблицами, используя EMGU.CV или Magick.Net или AForge.Net например, для изображения ниже функция должна вернуть 2 изображения с двумя таблицами в изображении.

private static List<Image> FindTables(Image img)
{
    var masterImage = (Bitmap)img;
    var image = new Image<Gray, byte>(masterImage);
    var copyImg = new Image<Bgr, byte>(masterImage);
    List<Image> tables = new List<Images>
    //Find all tables and add to tables variable
    return tables;
}

enter image description here

1 Ответ

0 голосов
/ 04 января 2019

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

Входной сигнал: enter image description here

IFS=" "
OLDIFS=$IFS
IFS=$'\n'
bboxArr=(`convert image.png -alpha off -type bilevel \
-define connected-components:verbose=true \
-define connected-components:area-threshold=500 \
-connected-components 4 \
null: | grep "gray(0)" | awk '{print $2}'`)
num=${#bboxArr[*]}
IFS=$OLDIFS
for ((i=0; i<num; i++)); do
convert image.png -crop ${bboxArr[$i]} +repage image$i.png
done


enter image description here

enter image description here

Извините, я не знаю Magick.NET. Но вы можете обсудить это с разработчиком Magick.NET, задав по телефону https://imagemagick.org/discourse-server/viewforum.php?f=27 или https://github.com/dlemstra/Magick.NET

...