Монохромный растровое изображение - PullRequest
2 голосов
/ 29 июня 2010

Должно быть легко.

Я работаю над Scala, пытаясь обработать длинные последовательности двоичных данных. Это длинные списки 0 и 1. Каков «лучший» способ хранения / доступа к данным такого рода.

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

Является ли BitMap хорошей идеей? Есть ли в scala такой класс?

если нет, то лучше ли использовать ByteArray? Как бы вы это реализовали?

Есть еще идеи?

Спасибо

Ответы [ 2 ]

2 голосов
/ 29 июня 2010

Если ваши значения распределены неравномерно (значительно больше 0 с, чем 1 с), вы можете использовать кодирование длины серии для кодирования данных изображения.Это кодировка, используемая факсом.

Существует два варианта кодирования:

  • использовать RLE для черного и белого
  • использовать только RLE для одного цвета и использовать aпрямое кодирование, если вы кодируете другой цвет (или смешанные участки)
2 голосов
/ 29 июня 2010

Вы можете использовать java.util.BitSet (возможно, с парой, если умные объяснения сделают его более похожим на Scala).

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

...