DICOM (Digital Imaging and Communication in Medicine) es el estándar
reconocido mundialmente para el intercambio de imágenes médicas, pensado
para el manejo, almacenamiento, impresión y transmisión de imágenes médicas.
Mas abajo pueden descargarse un conversor de archivos
en formato DICOM a bmp, jpg o png y un visor de imágenes que
incluye el objeto ActiveX ezDICOMax.ocx.
Para instalarlo:
Desde Delphi seleccionar 'Import ActiveX Control' desde el
menú "component" y después pulsar "Add" y
"Install" seleccionado el archivo DCMaxPro.OCX que está incluido en
la carpeta.
Una vez que se ha instalado correctamente se debería ver el
componente "DCMax" en la pestaña "ActiveX" de la barra de
componentes.
Si da un error del tipo "eOlesyserror" es porque no
se ha registrado el activex llamado ezDICOMax.ocx
Para instalarlo teclear: c:\regsvr32 ezDICOMax.ocx
y para desinstalarlo c:\regsvr32 /u ezDICOMax.ocx
Codigo fuente en Delphi :
Conversor de imagenes DICOM a bmp,jpg,png
Autor: Wolfgang Krug and Chris Rorden
chris.rorden@nottingham.ac.uk
Visor de imagenes
PROCEDIMIENTOS DEL PROGRAMA
procedure TForm1.ToolClick(Sender: TObject);
begin
DCMax1.DCMtool := (sender as TSpeedButton).tag;
end;
procedure TForm1.Exit1Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.Open1Click(Sender: TObject);
begin
if not OpenDialog1.execute then exit;
DCMax1.DCMfilename := OpenDialog1.Filename;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
DCMax1.DCMtoolbar := false;
Smooth1.Checked := DCMax1.DCMsmoothOn;
end;
procedure TForm1.N2001Click(Sender: TObject);
var lPct: integer;
begin
(Sender as TMenuItem).Checked := true;
lPct := (Sender as TMenuItem).tag;
if lPct = 0 then begin
if not DCMax1.DCMbestFitZoom then
DCMax1.DCMbestFitZoom := true;
end else begin
if DCMax1.DCMbestFitZoom then
DCMax1.DCMbestFitZoom := false;
DCMax1.DCMzoomPct := lPct;
end;
end;
procedure TForm1.Smooth1Click(Sender: TObject);
begin
Smooth1.Checked := not Smooth1.Checked;
DCMax1.DCMsmoothOn := Smooth1.Checked;
end;
procedure TForm1.InvertedHotmetal1Click(Sender: TObject);
begin
(Sender as TMenuItem).Checked := true;
DCMax1.DCMcolorscheme := (Sender as TMenuItem).tag;
end;
procedure TForm1.N3x3Click(Sender: TObject);
var lMosaic: integer;
begin
lMosaic := (Sender as TMenuItem).tag;
(Sender as TMenuItem).checked := true;
//Form1.caption := inttostr(lMosaic);
DCMax1.DCMmosaicFirstSlice := 1;
DCMax1.DCMmosaicLastSlice := maxint;
DCMax1.DCMmosaicRows := lMosaic;
DCMax1.DCMmosaicCols := lMosaic;
//DCMax1.DCMmosaicX[lMosaic,lMosaic,1] := MaxInt;
//DCMax1.DCMmosaicX[2,2,1,16];
//xxxx
end;
procedure TForm1.DelphiDemo1Click(Sender: TObject);
begin
showmessage('DelphiDemo by Chris Rorden. Demonstrates ezDICOM ActiveX component. '+
DCMax1.DCMversionInfo);
end;
procedure TForm1.ShowHeader1Click(Sender: TObject);
begin
ShowHeader1.Checked := not ShowHeader1.Checked;
DCMax1.DCMshowHeader := ShowHeader1.Checked;
end;
procedure TForm1.Copy1Click(Sender: TObject);
begin
if DCMax1.DCMshowHeader then
DCMax1.DCMcopyHeader2Clipboard
else
DCMax1.DCMcopyImage2Clipboard;
end;
procedure TForm1.Saveimage1Click(Sender: TObject);
begin
if not SaveDialog1.Execute then exit;
DCMax1.DCMsaveToFile := SaveDialog1.FileName;
end;
procedure TForm1.Border1Click(Sender: TObject);
begin
// DCMax1.DCMmo
end;
procedure TForm1.Unloadimages1Click(Sender: TObject);
begin
end;
(*procedure TForm1.Loadc0020dcm50times1Click(Sender: TObject);
var lInc: integer;
begin
for lInc := 1 to 50 do
DCMax1.DCMfilename := 'C:\0020.dcm';
end;
procedure TForm1.Unloadimages1Click(Sender: TObject);
begin
DCMax1.DCMunloadImages:= 0;
end;
*)
procedure TForm1.PreviousSliceItemClick(Sender: TObject);
begin
if DCMax1.DCMslice > 1 then
DCMax1.DCMslice := DCMax1.DCMslice -1
else
DCMax1.DCMslice := DCMax1.DCMimageSlices;
end;
procedure TForm1.NextSliceItemClick(Sender: TObject);
begin
if DCMax1.DCMslice < DCMax1.DCMimageSlices then
DCMax1.DCMslice := DCMax1.DCMslice +1
else
DCMax1.DCMslice := 1;
end;
procedure TForm1.DCMax1DCMmouseMoveIntensity(ASender: TObject; X, Y,
Button, Shift, Intensity: Integer; RGB: WordBool);
begin
Caption := inttostr(X)+','+inttostr(Y)+':'+inttostr(intensity);
end;
No hay comentarios:
Publicar un comentario