⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 amr.bff

📁 toolbox of BVQX, This is the access between BV and matlab. It will help you to analysis data from BV
💻 BFF
字号:
# BinaryFileFormat (leave this tag as magic token!)

# BVQX file format for *.AMR files (Anatomical MR image)
# AMR FileVersions supported: (no versioning information)
#
# AMR files contain anatomical 2D data. The actual data are
# stored as *.bmp images. Each data point is one byte.
#
# Version:  v0.7a
# Build:    7072014
# Date:     Jul-20 2007, 2:27 PM CEST
# Author:   Jochen Weber, Brain Innovation, B.V., Maastricht, NL
# URL/Info: http://wiki.brainvoyager.com/BVQXtools

# FILE FORMAT
Description:Anatomical coplanar MRI files
EncodingSyntax:ieee-le
Extensions:amr
Magic:|
name             |range       |type    |magic
AMR_BITMAPbmType |3, 4        |hex     |42,4d
EndMagic

# FIELDS
ListOfFields:!
type  !cond                   !disktype!datatype!dim                      !default !varname
EXPRE !$BFFWRITE          !!!!!@NrOfSlices = numel(@Slice);
FIELD !                       !uint16  !double  !1, 1                     !        !NrOfSlices

# looping over NrOfSlices
EXPRE !$BFFREAD           !!!!!@Slice = cell2struct(cell(0, 0, 4), {'BITMAPFILEHEADER', 'BITMAPINFOHEADER', 'BITMAPRGBQUAD', 'AMRData'}, 3); @Slice(@NrOfSlices).AMRData = [];
BLOOP !                       ! ! !@NrOfSlices ! !SliceNo

# BITMAPFILEHEADER (see Win32 API reference)
FIELD !                       !uint16  !uint16  !1, 1                     !        !Slice($SliceNo).BITMAPFILEHEADER.bfType     # = 'BM' :: 19778
FIELD !                       !uint32  !double  !1, 1                     !        !Slice($SliceNo).BITMAPFILEHEADER.bfSize
FIELD !                       !uint16  !uint16  !1, 1                     !        !Slice($SliceNo).BITMAPFILEHEADER.bfReserved1
FIELD !                       !uint16  !uint16  !1, 1                     !        !Slice($SliceNo).BITMAPFILEHEADER.bfReserved2
FIELD !                       !uint32  !double  !1, 1                     !        !Slice($SliceNo).BITMAPFILEHEADER.bfOffBits
FIELD !                       !uint32  !double  !1, 1                     !        !Slice($SliceNo).BITMAPINFOHEADER.biSize

# either just a BITMAPCOREHEADER or full BITMAPFILEHEADER
EXPRE !                   !!!!!if @Slice($SliceNo).BITMAPINFOHEADER.biSize == 40, $IsInfoHeader = true; else $IsInfoHeader = false; end

# BITMAPCOREHEADER
BLOOP !~$IsInfoHeader         ! ! !1 ! !BMPCoreHeader
FIELD !                       !uint16  !double  !1, 1                     !        !Slice($SliceNo).BITMAPINFOHEADER.biWidth
FIELD !                       !uint16  !double  !1, 1                     !        !Slice($SliceNo).BITMAPINFOHEADER.biHeight
FIELD !                       !uint16  !double  !1, 1                     !        !Slice($SliceNo).BITMAPINFOHEADER.biPlanes
FIELD !                       !uint16  !double  !1, 1                     !        !Slice($SliceNo).BITMAPINFOHEADER.biBitCount
EXPRE !                   !!!!!$ColorsUsed = 2 .^ @Slice($SliceNo).BITMAPINFOHEADER.biBitCount;
ELOOP !                       ! ! !  ! !BMPCoreHeader

# BITMAPINFOHEADER
BLOOP !$IsInfoHeader          ! ! !1 ! !BMPInfoHeader
FIELD !                       !uint32  !double  !1, 1                     !        !Slice($SliceNo).BITMAPINFOHEADER.biWidth
FIELD !                       !uint32  !double  !1, 1                     !        !Slice($SliceNo).BITMAPINFOHEADER.biHeight
FIELD !                       !uint16  !double  !1, 1                     !        !Slice($SliceNo).BITMAPINFOHEADER.biPlanes
FIELD !                       !uint16  !double  !1, 1                     !        !Slice($SliceNo).BITMAPINFOHEADER.biBitCount
FIELD !                       !uint32  !double  !1, 1                     !        !Slice($SliceNo).BITMAPINFOHEADER.biCompression
FIELD !                       !uint32  !double  !1, 1                     !        !Slice($SliceNo).BITMAPINFOHEADER.biImageSize
FIELD !                       !uint32  !double  !1, 1                     !        !Slice($SliceNo).BITMAPINFOHEADER.biXPixelsPerMeter
FIELD !                       !uint32  !double  !1, 1                     !        !Slice($SliceNo).BITMAPINFOHEADER.biYPixelsPerMeter
FIELD !                       !uint32  !double  !1, 1                     !        !Slice($SliceNo).BITMAPINFOHEADER.biClrUsed
FIELD !                       !uint32  !double  !1, 1                     !        !Slice($SliceNo).BITMAPINFOHEADER.biClrImportant
EXPRE !                   !!!!!$ColorsUsed = @Slice($SliceNo).BITMAPINFOHEADER.biClrUsed;
ELOOP !                       ! ! !  ! !BMPInfoHeader

# Colortable
FIELD !                       !uint8   !double  !4, $ColorsUsed           !        !Slice($SliceNo).BITMAPRGBQUAD

# BITMAP pixel data
EXPRE !                   !!!!!$biHeight = @Slice($SliceNo).BITMAPINFOHEADER.biHeight;
EXPRE !                   !!!!!$biWidth  = @Slice($SliceNo).BITMAPINFOHEADER.biWidth;
FIELD !                       !uint8   !uint8   !$biHeight, $biWidth      !        !Slice($SliceNo).AMRData

# end of loop over NrOfSlices
ELOOP !                       ! ! !  ! !SliceNo

# Read rest of File into REMAININGCONTENT
EXPRE !$BFFREAD   !  !  !  !  !$RemSize = $FILESIZE - ftell(fid);
EXPRE !$BFFWRITE  !  !  !  !  !$RemSize = 0; try, if isfield(@@, 'REMAININGCONTENT'), $RemSize = prod(size(@REMAININGCONTENT)); end, end
FIELD !$RemSize > 0           !uint8   !uint8   !1, $RemSize              !        !REMAININGCONTENT

EndListOfFields

# new file code snippet
NewFileCode:!
@NrOfSlices = 30;
@Slice.BITMAPFILEHEADER.bfType = uint16(19778);
@Slice.BITMAPFILEHEADER.bfSize = 66614;
@Slice.BITMAPFILEHEADER.bfReserved1 = uint16(0);
@Slice.BITMAPFILEHEADER.bfReserved2 = uint16(0);
@Slice.BITMAPFILEHEADER.bfOffBits = 1078;
@Slice.BITMAPINFOHEADER.biSize = 40;
@Slice.BITMAPINFOHEADER.biWidth = 256;
@Slice.BITMAPINFOHEADER.biHeight = 256;
@Slice.BITMAPINFOHEADER.biPlanes = 1;
@Slice.BITMAPINFOHEADER.biBitCount = 8;
@Slice.BITMAPINFOHEADER.biCompression = 0;
@Slice.BITMAPINFOHEADER.biImageSize = 65536;
@Slice.BITMAPINFOHEADER.biXPixelsPerMeter = 2834;
@Slice.BITMAPINFOHEADER.biYPixelsPerMeter = 2834;
@Slice.BITMAPINFOHEADER.biClrUsed = 256;
@Slice.BITMAPINFOHEADER.biClrImportant = 256;
@Slice.BITMAPRGBQUAD = [[repmat(round([0:255/225:255]), [3, 1]), [zeros(1, 10);75:20:255; 255 * ones(1, 10)], [255:-20:75; 75:20:255; zeros(1, 10)], 255 * ones(3, 10)]; zeros(1, 256)];
tbiHeight = @Slice.BITMAPINFOHEADER.biHeight;
tbiWidth  = @Slice.BITMAPINFOHEADER.biWidth;
@Slice.AMRData = uint8(0); @Slice.AMRData(tbiHeight, tbiWidth) = @Slice.AMRData(1);
@Slice(2:@NrOfSlices) = @Slice;
EndNewFileCode

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -