2016-07-11 2 views
0

Знаете ли вы, что компьютер сохраняет изображения в виде каналов и пикселей в этих каналах. Значения пикселей равны «00110101», которые заполняют 8 бит в памяти. Я хочу знать, где эти биты хранятся в памяти, и как я могу выполнять операции над ними.Как компьютер хранит изображения или видео в качестве данных и где, могу ли я выполнять операции над ним?

Спасибо!

+0

Какой компьютер вы используете - Windows? Linux? Mac? Какие операции вы хотите сделать? Увеличить? Обратить? Обрезка? Вы хотите писать программы для этого или просто запускать команды в командной строке? Важна ли производительность/скорость? –

+0

@Mark Setchell Я использую окна, я хочу сделать обрезку или операцию увеличения, я хочу писать программы для этого, производительность или скорость не так важны, но я не хочу заполнять много дополнительного хранилища при выполнении операции. Например, при увеличении, если я увеличиваю на 4 бита, я не хочу заполнять 32 бита места в памяти. –

+0

Почему? Вы можете купить гигабайты оперативной памяти за несколько $? –

ответ

0

Т.Л., д-р сильно отличается от различных кодировок/файловых систем/OS'es/водителей

Ну, что зависит от формата изображения. BMP - один из самых простых форматов, подробности о том, как выглядят эти файлы, например, можно найти на странице wiki

И для ответа на вопрос «где его хранить» он хранится в постоянном хранилище (hardrive/ssd), где точно зависит на файловой системе (FAT/NTFS/EXT и т. д.).

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

+0

Если вы хотите поэкспериментировать с манипуляцией изображениями, я могу порекомендовать изучить библиотеку изображений Pythons PIL/Pillow. –

1

Ну, стандартная книга Digital Image Processing от Gonzalez and Woods.

Другая книга, в которой вы можете получить PDF бесплатно, - Image Processing in C от Dwayne Philips - PDF here.

Во-первых, вам нужно получить приличную компилятор C и систему разработки - лично я использую Mac OSX, но, я думаю, вам нужна бесплатная версия Visual Studio для Windows.

Затем вам нужно начать с простого чтения и записи файлов и выделения памяти. Я бы пошел с оттенками серого в формате NetPBM - возможно, всего PGM файлов - описал here, поскольку они самые простые. Вы можете загрузить программы NetPBM и запустить их в командной строке Windows и посмотреть, как они работают, и попробовать и реализовать их самостоятельно на C. Вы также можете скачать ImageMagick для Windows и попробовать конвертировать изображения из цвета в оттенки серого и изменить их размер следующим образом:

convert input.png -colorspace gray result.jpg 

convert input.tif -resize 400x400 result.pgm 

Когда у вас это получилось, я перейду к цветному PPM-формату, а затем, возможно, PNG и/или JPEG. Помните, что есть библиотеки для TIF/JPEG/PNG/BMP, поэтому не бойтесь их использовать.

Наконец, перейдем к отображению изображений непосредственно с Windows GDI и т.д.

Вернись к StackOverflow, если вы застряли - вопросы бесплатно!

Смежные вопросы