|
#1
|
|||
|
|||
Прочесть формат
Первые 2048 байт - заголовок со служебной информацией (не имеет особого значения, пропускаем).
С 2048 байта идет информация о 2048*2500 пикселях изображения, оттенки серого, 2 байта на пиксель, т.е. 10240000 байт на само изображение. Тип данных в пикселе тоже не известен. Проблема в том, что не получается вывести нормальное изображение, хоть там и понятно, что это рентгенограмма грудной клетки. Код:
var w: Word; F: TFileStream; x, y, count, gray: Integer; Buffer: array [0..1] of byte; begin F := TFileStream.Create('ImgFile', fmOpenReadWrite); count := 0; for y := 1 to 2500 do begin for x := 1 to 2048 do begin F.Seek(2047 + 2 * count, soFromBeginning); F.Read(Buffer, Length(Buffer)); w := MakeWord(Buffer[0], Buffer[1]); gray := Round(256 * w / 2047); Image1.Canvas.Pixels[x, y] := RGB(gray, gray, gray); count := count + 1; end; Application.ProcessMessages; end; F.Free; Файл: http://nekaka.com/d/R635YFwPqV Статья, которой пользовался: http://www.delphimaster.ru/articles/pixels/ Последний раз редактировалось ART, 29.03.2013 в 11:56. |
#2
|
||||
|
||||
Формат данных бы определить, было бы попроще.
Неизвестен до какой степени? На каком оборудовании создавался Image (фирма марка мб...) Или это смоделированный файл в каком нибудь MatLab Gate Geant? ЗЫ. Вчера лекция в институте по форматам изображений в томографии была Если это какой-нибудь ECAT7 то без чтения заголовков никак не обойтись. |
#3
|
|||
|
|||
На изображении написано Kodak Ektascan gp-25. Хотя это пленка наверное. Исходный формат скорее всего KESPR CR
Последний раз редактировалось ART, 29.03.2013 в 11:20. |
#4
|
||||
|
||||
Первое это кассета, где плёнка устанавливается. А формат обыкновенный CR.
Я правильно понимаю, что вас не устраивает цвет?(Если убрать все издевательства над w, которые вы сделали то картинка получается зелёной) и что нужно в graystyle отобразить? |
#5
|
|||
|
|||
Нужно черно белое изображение. Я так понимаю должны быть плавные переходы, а не рваные области одного цвета.
|
#6
|
||||
|
||||
Знающие люди вот что сказали:
"С, неважно какой формат изображения. В каждом пикселе лежит интенсивность. И как ты её будет отображать - твоё дело: цвет или чёрно-белый. В этом изображении я вижу, что нету фильтра. Руками такой написать можно, но это очень не простая задача. С уважением, Л." В общем, если в двух словах, то надо просто применить фильтрацию. Какую? Есть туча книг по этой теме. И математики там с Фурье преобразованиями просто тьма. Моё мнение : надо смотреть в сторону ITK. Это гигантская библиотека для работы с Томографическими изображениями. Последний раз редактировалось Uniq!, 29.03.2013 в 12:05. |
#7
|
||||
|
||||
Неверно указан размер изображения, верный - 2048х2502
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |