dcmtk³ÌÐò°ü¼ò½é
¸ÃÎļòµ¥ÁгöÁËdcmtk³ÌÐò°üµÄ¼ò½é£¬°üÀ¨Ö÷Òª½Ó¿ÚÀàµÄ¼òµ¥ËµÃ÷£¬¿ÉÓù¤¾ßÒÔ¼°Ò»Ð©Àý×Ó¡£ÏÂÒ»²½¹¤×÷×¼±¸Ïêϸ·ÖÎöÿ¸ö³ÌÐò°üÖеĽӿÚÀ๦ÄÜ£¬²¢½áºÏÔ´ÂëºÍdicomÎĵµ·ÖÎöÆäʵÏÖ¹ý³Ì¡£
Ò»¡¢Config³ÌÐò°ü -configĿ¼ÏµÄÎĵµ£º --config.txt:
Ö¸³öÄã±à¼µÄÈκÎ.h .c .ccÎļþÊ×ÏȱØÐë°üº¬¸ÃĿ¼ÏµÄÍ·Îļþ#include \--dirstruc.txt:
¸ø³öÁËdcmtkÏîÄ¿µÄÏîĿĿ¼½á¹¹£¬Õâ¸öÓÃcmake»á×Ô¶¯Éú³É --envvars.txt:
Õâ¸öÎļþ±È½ÏÖØÒª£¬ËüÖ¸³öÁËһЩÔËÐÐʱ»·¾³±äÁ¿£¬ÕâЩ±äÁ¿¿ÉÄÜ»áÓ°ÏìdcmtkµÄ¹¤¾ßºÍ¿âµÄʹÓã¬ÕâЩ±äÁ¿°üÀ¨£º
---DCMDICTPATH:Ó°Ïìdcmdata
On Win32 platforms, a built-in dictionary is used by default. If the DCMDICTPATH environment variable is set, the applications will attempt to load _additional_ DICOM data dictionaries specified in the DCMDICTPATH environment variable instead. The DCMDICTPATH environment variable has the same format as the shell PATH variable in that a semicolon (\separates entries. The data dictionary code will attempt to load each file specified in the DCMDICTPATH environment variable.
See also: documentation in dcmdata/docs/datadict.txt ---TCP_BUFFER_LENGTH:Ó°Ïìdcmnet
By default, DCMTK uses a TCP send and receive buffer length of 32K. If the environment variable TCP_BUFFER_LENGTH is set, it specified an override for the TCP buffer length. The value is specified in bytes, not in Kbytes.
---TCP_NODELAY:Ó°Ïìdcmnet
If this environment variable contains a non-zero number, the Nagle algorithm will not be disabled for TCP transport connections. Also see documentation for macro DONT_DISABLE_NAGLE_ALGORITHM in config/docs/macros.txt
---TMPDIR:Ó°Ïìdcmnet
Affects the implementation of the tempnam() emulation on platforms where tempnam() is not defined. See tempnam(3S) main page for a description.
--macros.txt:
Õâ¸öÎļþÒ²ÌØ±ðÖØÒª£¬Ëü¸ø³öÁ˺ܶà±àÒëʱµÄºê£¬ÕâЩºê¿ÉÄÜ»áÓ°ÏìdcmtkµÄ¹¤¾ßºÍ¿âµÄʹÓᣴ󲿷ֵĺê¿ÉÒÔÓÃÀ´¼¤»îһЩʵÑéÐԵĻòºÜÉÙÐèÒªµÄÌØÐÔ£¬ÁíÍâÓÐһЩÊÇÓÃÀ´È¡ÏûijЩ¹¦ÄÜ¡£Òª¾¡Á¿½÷É÷ʹÓá£Ïêϸ¼ûÎĵµ¡£
--modules.txt:
Õâ¸öÎļþ½²ÊöÈçºÎ×Ô¼ºÅäÖø÷¸öÄ£¿é£¬²»ÐèÒªÕÆÎÕ¡£ -configµÄincludeĿ¼ÏµÄÎļþ
--osconfig.h£ºÕâ¸öÎļþÊDZØÐë°üº¬ÔÚËùÓÐ.h .cÎļþÖеÄ,ÆäÖÐÖ¸³öÔÚwin32»·¾³Ï°üº¬\Îļþ
--cfwin32.h:°üº¬ÁË´óÁ¿µÄºê¶¨Òå¡£***Èç¹ûÐèÒª²éÕÒij¸öºêµÄ¶¨Ò壬¿Éµ½Õâ¸öÎļþÖвéÕÒ***
¶þ¡¢ofstd³ÌÐò°ü
-ofstd:×÷Ϊһ°ãÄ¿µÄµÄÀà¿â¡£
Õâ¸öÄ£¿é°üº¬ÁËÒ»°ãÄ¿µÄµÄÀà¿â£¬ÕâЩÀàËùÃèÊöµÄ¶ÔÏó¸ÅÄî²¢·ÇÔÚDicom±ê×¼ÖÐÌØÓС£ËüÃǹ㷺µÄÔÚtoolkitÖÐʹÓá£Ö÷Òª°üº¬ÏÂÃæµÄÀà
--OFCommandLine£º´¦ÀíÃüÁîÐвÎÊý£¬Í·ÎļþÔÚofcmdln.h¡£***ÏêÇéÐèÒª½áºÏ¾ßÌåµÄ´úÂëÀ´Àí½â***
--OFCondition£ºÃèÊöÌõ¼þÂëµÄÒ»°ãÀࡣͷÎļþÔÚofcond.h¡£***ÏêÇéÐèÒª½áºÏ¾ßÌåµÄ´úÂëÀ´Àí½â***
--OFConsole:ÊÇÒ»¸ösingleton(¹ÂÁ¢)Àà***²»Ã÷°×***¡£ÌṩḬ̈߳²È«µÄ¶Ô±ê×¼Êä³öÁ÷ºÍ´íÎóÁ÷µÄ·ÃÎÊ¡£ÔÊÐíÒÔ¶àÏ̵߳ķ½Ê½Í¬Ê±´´½¨Êä³ö¡£***¶àÏ̵߳Ķ«Î÷²»Ì«Ã÷°×£¬ËüµÄ×÷ÓÃÓ¦¸ÃÊÇÔÚ¶àÏß³ÌÖÐʵÏÖÖ¸¶¨Ï̵߳ÄÊä³öÁ÷½øÐÐÊä³ö²Ù×÷***
--OFList:ÊÇÒ»¸öË«ÏòÁ´±íÄ£°åÀ࣬½Ó¿ÚÊÇSTL listÀàÖеÄÒ»¸ö×Ó¼¯¡£Í·ÎļþÔÚoflist.h¡£***²»Ã÷°×Ϊʲô²»Ö±½ÓÓñê×¼¿âÖеÄlist£¬¼æÈÝÐÔÓ¦¸Ã¸üºÃ°¡***
--OFStack£ºÊÇÒ»¸ö¶Ñջģ°åÀ࣬½Ó¿ÚÊÇSTL stackÀàÖеÄÒ»¸ö×Ó¼¯¡£Í·ÎļþÔÚofstack.h¡£***²»Ã÷°×Ϊʲô²»Ö±½ÓÓñê×¼¿âÖеÄstack£¬¼æÈÝÐÔÓ¦¸Ã¸üºÃ°¡***
--OFStandard£º°üº¬´óÁ¿°ïÖúº¯Êý×é³ÉµÄÀ࣬ÓÃÀ´°üº¬´óÁ¿¡°È«¾Ö¡±°ïÖúº¯Êý¡£×¢ÒâÈ«²¿¶¼ÊǾ²Ì¬º¯Êý¡£ÆäÖеÄһЩº¯ÊýʵÏÖµ÷ÓÃÁËwindows APIº¯Êý£¬Èçfileexists()¡£Í·ÎļþÔÚofstd.h¡£***Èç¹ûÐèҪһЩȫ¾Öº¯Êý£¬¿ÉÒÔµ½ÕâÀïÁËÕÒÒ»ÕÒ¡£***
--OFString:Ò»¸ö¼òµ¥µÄstringÀ࣬ʵÏÖÁËstd::stringµÄÒ»¸ö×Ó¼¯£¬Ã»ÓÐiterator»òtrait£¬ÔÚËÙ¶ÈÉÏҲûÓÐÓÅ»¯¡£Í·ÎļþÔÚofstring.h¡£***²»Ã÷°×Ϊʲô²»Ö±½ÓÓñê×¼¿âÖеÄstring£¬¼æÈÝÐÔÓ¦¸Ã¸üºÃ°¡***
--³ýÁËÉÏÊöµÄÖ÷ÒªÀàÒÔÍ⣬»¹°üº¬ÁË´óÁ¿¸¨ÖúÀ࣬ÓÃÀ´Ö§³ÅÉÏÊöÀàµÄ¹¦ÄÜ¡£***ÏêÇéÐèÒª½áºÏ¾ßÌåµÄ´úÂëÀ´Àí½â***
Èý¡¢dcmdata³ÌÐò°ü
-dcmdata:Ò»¸öÊý¾Ý±àÂë/½âÂë¿âºÍ¿ÉÓõŤ¾ß
Õâ¸öÄ£¿é°üº¬ÁËһЩÀàÀ´¹ÜÀíDicomÊý¾Ý½á¹¹ºÍÎļþ¡£Í¬Ê±ËüÒ²ÌṩÁ˶ÔDICOMDIRÎļþµÄÖ§³ÖÒÔÂú×ãDicom storage media£¨´æ´¢½éÖÊ£©µÄÐèÒª¡£
Ö÷ÒªµÄ½Ó¿ÚÀàÓУº --DcmFileFormat£ºa class handling the DICOM file format (with meta header) ¡£Í·ÎļþÔÚdcfilefo.h¡£***ÏêÇéÔÚµ¥¶ÀµÄÎĵµÖзÖÎö***
--DcmDataset£ºa class handling the DICOM dataset format (files without meta header) ¡£Í·ÎļþÔÚdcdatset.h¡£***ÏêÇéÔÚµ¥¶ÀµÄÎĵµÖзÖÎö***
--DcmItem£ºa class representing a collection of DICOM elements¡£Í·ÎļþÔÚdcitem.h¡£***ÏêÇéÔÚµ¥¶ÀµÄÎĵµÖзÖÎö***
--DcmElement£ºabstract base class for all DICOM elements¡£Í·ÎļþÔÚdcelem.h¡£***ÏêÇéÔÚµ¥¶ÀµÄÎĵµÖзÖÎö***¡£ËüµÄÅÉÉúÀà°üÀ¨£ºDcmAttributeTag\\DcmByteString\\DcmFloatingPointDouble\\DcmFloatingPointSingle\\DcmOtherByteOtherWord\\DcmSequenceOfItems\\DcmSignedLong\\DcmSignedShort\\DcmUnsignedLong\\DcmUnsignedShort
¹¤¾ß£ºÕâ¸öÄ£¿é°üº¬ÁËÏÂÃæµÄÃüÁîÐй¤¾ß£º
dcm2xml: Convert DICOM file and data set to XML dcmconv: Convert DICOM file encoding
dcmcrle: Encode DICOM file to RLE transfer syntax dcmdrle: Decode RLE-compressed DICOM file dcmdump: Dump DICOM file and data set
dcmftest: Test if file uses DICOM part 10 format dcmgpdir: Create a general purpose DICOMDIR dcmodify: Modify DICOM files
dump2dcm: Convert ASCII dump to DICOM file
xml2dcm: Convert XML document to DICOM file or data set ***ÔÝʱ²»¶ÔÃüÁîÐй¤¾ß½øÐÐÏêϸµÄ·ÖÎö*** ¾ÙÀý:
--µ÷ÈëÒ»¸öDICOMÎļþ£¬Êä³ö²¡ÈËÐÕÃû DcmFileFormat fileformat;
OFCondition status = fileformat.loadFile(\if (status.good())
{OFString patientsName; If (fileformat.getDataset()->findAndGetOFString(DCM_PatientsName, patientsName).good())
{ cout << \} else
cerr << \} else
cerr << \--´´½¨Ò»¸öDICOM datasetÊý¾Ý¼¯£¬²¢±£´æÎªÎļþ char uid[100];
DcmFileFormat fileformat;
DcmDataset *dataset = fileformat.getDataset();
dataset->putAndInsertString(DCM_SOPClassUID, UID_SecondaryCaptureImageStorage); dataset->putAndInsertString(DCM_SOPInstanceUID, dcmGenerateUniqueIdentifier(uid, SITE_INSTANCE_UID_ROOT));
dataset->putAndInsertString(DCM_PatientsName, \/* ... */
dataset->putAndInsertUint8Array(DCM_PixelData, pixelData, pixelLength); OFCondition status = fileformat.saveFile(\if (status.bad())
cerr << \--ÈçºÎΪ¶à¸öÎļþ´´½¨Ò»°ãÄ¿µÄµÄDICOMDIR DicomDirInterface dicomdir;
OFCondition status = dicomdir.createNewDicomDir(); if (status.good())
{while ( /* there are files */ )
dicomdir.addDicomFile( /* current filename */ ); status = dicomdir.writeDicomDir(); if (status.bad())
cerr << \} else
cerr << \ËÄ¡¢dcmimgle³ÌÐò°ü
dcmimgleÊÇÒ»¸öͼÏñ´¦Àí¿âºÍ¿ÉÓõŤ¾ßÄ£¿é£¬Ëü°üÀ¨Á˶ÔDICOMµ¥É«Í¼ÏñµÄ·ÃÎʺÍÏÔʾ¡£¶ÔÑÕɫͼÏñµÄÖ§³ÖÓÉdcmimageÄ£¿éÌṩ£¬¶ÔJPEGѹËõͼÏñµÄÖ§³ÖÓÉdcmjpegÄ£¿éÖ§³Ö¡£
Ö÷Òª½Ó¿ÚÀࣺ
--DicomImage: Ϊdcmimgle/dcmimageÄ£¿éÌṩ½Ó¿ÚÀà¡£Ö÷ҪĿµÄÊÇͼÏñÏÔʾ¡£ÔÚdcmimage.hÖж¨Òå¡£
--DiDisplayFunction: Class to handle hardcopy and softcopy device characteristics file and manage display LUTs (for calibration). ÔÚdidispfn.hÖж¨Òå¡£
¿ÉÓù¤¾ß£º
--dcmdspfn: Export standard display curves to a text file
--dcod2lum: Convert hardcopy characteristic curve file to softcopy format --dconvlum: Convert VeriLUM files to DCMTK display files ¾ÙÀý£º
--ÔØÈëÒ»·ùDICOMµ¥Ö¡µ¥É«Í¼Ïñ£¬²¢ÏÔʾÆäÏñËØÊý¾Ý¡£ DicomImage *image = new DicomImage(\if (image != NULL)
{if (image->getStatus() == EIS_Normal) {
if (image->isMonochrome()) {
image->setMinMaxWindow();
Uint8 *pixelData = (Uint8 *)(image->getOutputData(8 /* bits */)); if (pixelData != NULL) {
/* do something useful with the pixel data */ } } } else cerr << \cannot load DICOM image (\<< DicomImage::getString(image->getStatus()) << \
}
delete image;
Îå¡¢dcmimage³ÌÐò°ü
dcmimageÄ£¿éΪdcmimgleÄ£¿éÌṩ¶Ô²ÊɫͼÏñµÄÖ§³Ö¡£¶Ôµ¥É«Í¼ÏñµÄÖ§³ÖÓÉdcmimgleÌṩ£¬¶ÔJPEGѹËõͼÏñµÄÖ§³ÖÓÉdcmjpegÄ£¿éÖ§³Ö¡£
Ö÷Òª½Ó¿ÚÀࣺ
--DicomImage: ÔÚdcmimgleÖÐÒѽéÉÜ¡£ ¹¤¾ß£º
--dcm2pnm: Convert DICOM images to PPM/PGM, PNG, TIFF or BMP --dcmquant: Convert DICOM color images to palette color --dcmscale: Scale DICOM images ¾ÙÀý£º
--ÔØÈëÒ»·ùDICOMµ¥Ö¡Í¼Ïñ£¨µ¥É«»ò²ÊÉ«£©£¬²¢ÏÔʾÆäÏñËØÊý¾Ý¡£ #include \ /* required to support color images */