2016-02-13 2 views
0

Я совершенно новый для MATLAB. Я хочу прочитать файл .img в MATLAB и хочу экспортировать его в любой общий формат изображения. У меня нет никакой информации о файле (например, разрешение изображения). Я пробовал читать файл с помощью команды fread.Прочтите файл .img в MATLAB и

fid=fopen('image.img'); 
A=fread(fid,256*378,'unit8=>unit8'); 
fclose(fid); 
b=reshape(A,256,378); 
imshow(A); 

Я могу открыть его, только если я знаю разрешение моего .img-файла. Пожалуйста, помогите мне сделать то же самое, не зная, с какой резолюцией начать, или если кто-то может предложить лучший способ сделать это.

Загрузить .IMG-файл here.

+0

ли вы когда-нибудь запустить свой код? 3 ошибки в 5 строках. – Daniel

ответ

0

Неясно, с каким файлом .img вы имеете дело. Файлы .img обычно являются файлами образа диска. Существуют разные форматы файлов для Mac, Windows и ISO. Однако, похоже, вы спрашиваете о формате графического файла изображения, который может быть проприетарным. Если вы знаете, какая программа была использована для создания файла .img, вы можете узнать больше о ее внутреннем формате.

Функция dir может использоваться для определения общего количества байтов в файле, что позволит вам прочитать файл, используя fread. Однако вам все равно нужно знать размеры, чтобы изменить изображение.

0

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

imageinfo() является одним из что: покажет структуру с несколькими Infos относительно изображения, imread() будет импортировать изображение в виде матрицы, mat2grey() будет конвертировать RGB изображение в оттенках серого изображения ... и этот список можно продолжить.

fopen()/fread()/fclose() с изображениями: такие функции в основном используются для обработки текстовых файлов.

PS: предоставленная вами ссылка содержит образ диска (конечно, учитывая это расширение, как указано в правильном указателе @Herb).

+0

'imread' и' imageinfo' поддерживают только четко определенные форматы изображений, а не '.img', которые в контексте графических изображений обычно относятся к необработанным данным изображения. 'fread' - правильный выбор. – Daniel

0

Синтаксис fread() Функция в вашем коде неправильная.

Во-первых, тип данных uint8 не unit8.

  • U беззнаковый, что означает: Все значения являются положительными (отрицательным "знак" допускается)

  • INT является целыми числами, что означает: все значения являются целыми числами, 0,1,2, 3 ...

  • 8 только 8 бит информации, что означает: максимальное значение равно 255, а минимальное значение равно 0.

во-вторых, 256*378 аргумент в т функция fread() создаст другое измерение этого изображения. Таким образом, правильным способом является использование [].

f = fopen('image.img') 
image = fread(f, [256 378], '*uint8'); 
imshow(image,[]) 

davinci

imwrite(image, 'davinci.jpg', 'jpg') 
whos image 
Variables in the current scope: 

    Attr Name   Size      Bytes Class 
    ==== ====   ====      ===== ===== 
     image   256x378     96768 uint8 

Total is 96768 elements using 96768 bytes 

Этот вопрос может быть немного одинаково с этим question

  • ссылки 1
Смежные вопросы