Как преобразовать ультразвуковое сканирование Voluson 4D (файл .V00) в видео?

6149
tanius

У меня есть ультразвуковое сканирование «4D Volume Cine» (временной ряд 3D-сканирования), созданное на машине от GE Healthcare Voluson . Файл в их старом, проприетарном .V00формате.

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

1
Это супер конкретный вопрос. При нормальных обстоятельствах я бы надеялся на файл примера, но это не может быть вариант здесь? Journeyman Geek 9 лет назад 0
Да, извините, я не могу публиковать файлы, над которыми работаю. Тогда есть GE Healthcare [4D View Demo Cases галерея] (http://www.volusonclub.net/us/gevolumes), но, к сожалению, доступный только с логином, который требует, чтобы вы владели одним из их ультразвуковых устройств :( tanius 9 лет назад 0

3 ответа на вопрос

2
tanius

.V00файлы имеют формат "Kretzfile" / "Kretz 3D Ultrasound Images" [ источник ]. Связь между GE Healthcare и Kretz связана с тем, что «в 2001 году GE Medical Systems приобрела крупный пакет акций Kretztechnik AG у Medison, а Kretztechnik AG стала дочерней компанией GE Medical Systems» [ источник ].

Вы можете использовать 4D View . Это «официальное» программное обеспечение для ПК, предоставляемое компанией GE Healthcare для своих ультразвуковых аппаратов Voluson. Пример процесса о том, как экспортировать в видео с ним:

  1. Откройте файл в 4D View и выберите «Файл → Экспорт 4D Img. Cine Sequence…».
  2. Отметьте опцию «Сжатие» (кроме случаев, когда вы хотите выполнить постобработку на шаге 4, не используйте сжатие, чтобы предотвратить ошибку ). Оставьте «Коэффициент уменьшения» на «1,00: 1», так как иначе это уменьшит разрешение видео.
  3. Нажмите «Сохранить», чтобы экспортировать 4D том в .aviформат. То, что вы получите, должно выглядеть как повтор в 4D View, просто без букв.
  4. Чтобы удалить огромные черные границы из видео, подключить несколько экспортируемых видео и преобразовать все это в небольшой формат MP4, вы можете запустить следующую ffmpegкоманду в оболочке Linux, находясь в каталоге, содержащем ваши экспортированные, несжатые .aviфайлы и ничего еще:

    ffmpeg \ -i concat:"$(ls -l *.avi | awk 'BEGIN { print $9 }')" \ -filter:v "crop=400:380:332:175" \ -r 25 \ -crf 18 \ output.mp4 

    Это основано на нескольких других ответах . Если у вас есть avconvвместо этого, он работает с теми же параметрами. Предполагается, что содержимое размером 400 × 380 пикселей начинается с x = 332, y = 175 ( crop=т. Е. Примерно по центру видео 1068 × 740 пикселей) - при необходимости адаптируйте значения параметров к вашему случаю, измеряя на кадре. -crf 18выбирает более высокое качество, чем по умолчанию -crf 23, за счет большего размера файла. Я сомневаюсь, что улучшение качества видно хотя ...

  5. В целях архивирования вы можете захотеть хранить отдельные видео AVI (огромные, если они не будут сжаты!) В хорошем формате без потерь или почти без потерь, не объединяя их, но снова удаляя ненужную черную рамку:

    for file in *.avi; do ffmpeg \ -i $file \ -c:v libx264 \ -preset veryslow \ -crf 1 \ -r 25 \ -filter:v "crop=400:380:332:175" \ $; done 

    При этом используется H.264 со значением квантователя 1 ( -crf 1), которое почти без потерь [ источник ] и в 25 раз меньше, чем исходные несжатые AVI. Вы также можете использовать -crf 0или лучше -qp 0вместо этого, что приведет к действительно без потерь H.264. Он примерно на 20% больше, и не все игроки могут его прочитать [ подробнее ]. Но VLC и YouTube могут, например.

Некоторые советы по получению и установке 4D View:

  • 4D View доступен в виде лицензионного программного обеспечения, 60-дневной неограниченной демо-версии и не истекающей деактивированной версии [ см. ]. Кажется, что все можно экспортировать в .aviфайлы, но я попробовал только 60-дневную демонстрацию.
  • Более новые версии 4D View могут быть загружены только зарегистрированными владельцами машин Voluson (вам нужно зарегистрироваться и указать серийный номер вашей машины; но, возможно, они сделают исключение, если вы любезно попросите об этом). Однако более ранние версии были общедоступными для скачивания и все еще доступны в Интернете.
  • 4D View сделан для Windows 7, но также может быть установлен в Windows XP и т. Д.
  • 4D View нельзя использовать на виртуальной машине, по крайней мере, в VirtualBox с гостевым Windows XP (и с включенным 3D-ускорением). При попытке его запуска 4D View выдаст сообщение «Не найдена достаточная графическая карта или драйвер не установлен» и выйдет.

Некоторые подробности и контакты по конвертации файлов V00 можно найти в этой ветке comp.protocols.dicom . Для справочной информации есть также Руководство по обслуживанию Voluson S6 / S8 . Для тестов, здесь трудно найти 3D-сканирование в формате Kretzfile для загрузки; только 3D, поэтому не позволяет 4D- .aviпреобразование с 4D View.

Не возможно: 4DTheFetusView . Этот инструмент аналогичен версии 4D View 2005 года и по-прежнему доступен для бесплатной загрузки. За исключением того, что он может быть использован только для открытия демонстрационных томов, доступных через sonoworld.com . Эти демонстрационные тома 4D были прикреплены к нескольким из их дел (включая это, это, это ), но больше не доступны для скачивания.

Не возможно: DICOMatic . Это свободно загружаемый инструмент преобразования, который может конвертировать множество проприетарных форматов медицинских изображений в новый стандартный формат DICOM . Просто незарегистрированная версия водяных знаков экспортировала изображения [ источник ]. В DICOM можно использовать свободно доступные инструменты MicroDICOM или DICOM Cine Viewer для экспорта видеофайла. Однако для формата GE KretzFile DICOMatic отмечает, что «DICOM не поддерживает трехмерные тома для ультразвуковых изображений» [ источник]. При попытке открыть файл .V00 в DICOMatic я заметил, что он не поддерживает полярные координаты. Возможно, это равносильно тому, что 3D-тома не поддерживаются (?). Таким образом, это не сработало (для меня), но производитель говорит, что это должно работать [ источник ].

Не возможно: TomoVision и скриншот. TomoVision - это программа просмотра медицинских форматов изображений, поэтому, если она может отображать последовательности .V00, можно преобразовать ее в видео с помощью скриншота. Однако, поскольку он использует ту же библиотеку, что и DICOMatic [ source ], он также не сможет прочитать том 4D. Хотя, опять же, производитель заявляет, что это возможно [ источник ].

I got it running in VirtualBox with, Windows 7 with 3D acceleration enabled Codey McCodeface 8 лет назад 1
1
Andras Lasso

Я реализовал устройство для считывания ультразвуковых изображений GE / Kretz 3D в 3D Slicer. После загрузки изображения вы можете использовать все удивительные инструменты в 3D Slicer для его визуализации и обработки (например, для создания 3D-модели для печати). Вы можете увидеть демо здесь:

https://youtu.be/UHq0uyDvhaA

Он еще не идеален (сферическое преобразование в декартово не совсем точно), но он абсолютно бесплатный и с открытым исходным кодом - исправления и улучшения приветствуются. Для получения дополнительной информации и вопросов, пожалуйста, отправьте сообщение на форум 3D Slicer:

https://discourse.slicer.org/t/loading-of-ge-kretz-ultrasound-volumes-vol-file/808/14?u=lassoan

0
g.stevo

Предполагая, что вы экспортировали файл Voluson без включенного сжатия (Wavelet = 'Off') и с выбранным Volume / Raw File ... попробуйте использовать этот сценарий, чтобы увидеть, имеют ли ваши данные сторонний формат DICOM. Это не восстанавливает данные в пригодный для использования формат, но показывает, можете ли вы получить доступ к данным элемента.

import struct import sys  class GETagAnalyser(object):  def __init__(self,fname): self.m_fname = None if fname is not None: self.m_fname = fname self.m_tagdict = []   def readAllTags(self): with open(self.m_fname,'rb') as f: hdr = f.read(16) print hdr #find end f.seek(0,2)  fend = f.tell() print fend #back to start f.seek(16,0)  while f.tell() <= fend-4: t1,t2,s,tag_data,f = self.readNextTag(f)  #self.m_tagdict  print hex(t1), hex(t2),s  #print t1, t2, s   def readNextTag(self,f): firsttag = f.read(2) firsttag = struct.unpack('@H',firsttag)  secondtag = f.read(2) secondtag = struct.unpack('@H',secondtag)  size = f.read(4) size = struct.unpack('@I',size)  data = f.read(size[0])  tag1,tag2,size,data = firsttag[0],secondtag[0],size[0],data return tag1,tag2,size,data,f  def main():  if len(sys.argv) != 2: print "Usage: GETagAnalyser <inputfile>" return g = GETagAnalyser(sys.argv[1]) #print sys.argv[1] g.readAllTags() 

Похожие вопросы