inst/doc/dicom.R

### R code from vignette source 'dicom.Rnw'
### Encoding: UTF-8

###################################################
### code chunk number 1: preliminaries
###################################################
require("oro.dicom")
require("oro.nifti")
options(prompt = "R> ", continue = "+  ", width = 70, useFancyQuotes = FALSE)


###################################################
### code chunk number 2: DICOM Abdo 01
###################################################
fname <- system.file(file.path("dcm", "Abdo.dcm"), package="oro.dicom")
abdo <- readDICOMFile(fname)
names(abdo)
head(abdo$hdr)
tail(abdo$hdr)


###################################################
### code chunk number 3: DICOM Abdo 02
###################################################
extractHeader(abdo$hdr, "BitsAllocated")
extractHeader(abdo$hdr, "Rows")
extractHeader(abdo$hdr, "Columns")


###################################################
### code chunk number 4: DICOM HK40 00
###################################################
load(system.file("hk-40/hk40.RData", package="oro.dicom"))


###################################################
### code chunk number 5: DICOM HK40 01 (eval = FALSE)
###################################################
## fname <- system.file("hk-40", package="oro.dicom")
## data(dicom.dic)
## hk40 <- readDICOM(fname)


###################################################
### code chunk number 6: DICOM HK40 01.1
###################################################
unlist(lapply(hk40, length))


###################################################
### code chunk number 7: DICOM HK40 02
###################################################
hk40.info <- dicomTable(hk40$hdr)
write.csv(hk40.info, file="hk40_header.csv")
sliceloc.col <- which(hk40$hdr[[1]]$name == "SliceLocation") 
sliceLocation <- as.numeric(hk40.info[, sliceloc.col])
head(sliceLocation)
head(diff(sliceLocation))
unique(extractHeader(hk40$hdr, "SliceThickness"))


###################################################
### code chunk number 8: DICOM HK40 03
###################################################
head(extractHeader(hk40$hdr, "SliceLocation"))
modality <- extractHeader(hk40$hdr, "Modality", numeric=FALSE)
head(matchHeader(modality, "mr"))
(seriesTime <- extractHeader(hk40$hdr, "SeriesTime", numeric=FALSE))
str2time(seriesTime)


###################################################
### code chunk number 9: abdo-png
###################################################
jpeg(filename="dicom_abdo.jpeg", width=480, height=480, quality=95, bg="black")
par(mar=rep(0,4))


###################################################
### code chunk number 10: abdo-image
###################################################
image(t(abdo$img), col=grey(0:64/64), axes=FALSE, xlab="", ylab="")


###################################################
### code chunk number 11: abdo-dev.off
###################################################
dev.off()


###################################################
### code chunk number 12: DICOM Abdo 03
###################################################
extractHeader(abdo$hdr, "Manufacturer", numeric=FALSE)
extractHeader(abdo$hdr, "RepetitionTime")
extractHeader(abdo$hdr, "EchoTime")


###################################################
### code chunk number 13: DICOM Siemens 01
###################################################
fname <- system.file(file.path("dcm", "MR-sonata-3D-as-Tile.dcm"),
                     package="oro.dicom")
dcm <- readDICOMFile(fname)
dim(dcm$img)
dcmImage <- create3D(dcm, mosaic=TRUE)
dim(dcmImage)


###################################################
### code chunk number 14: DICOM Siemens 02
###################################################
dcmNifti <- dicom2nifti(dcm, mosaic=TRUE)
jpeg(filename="dcmImage.jpeg", width=2*480, height=2*480, quality=95, bg="black")
image(t(dcm$img), col=grey(0:64/64), zlim=c(16, 1024), axes=FALSE, 
      xlab="", ylab="")
dev.off()
jpeg(filename="dcmNifti.jpeg", width=480, height=480, quality=95, bg="black")
image(dcmNifti, zlim=c(16, 1024))
dev.off()


###################################################
### code chunk number 15: DICOM2NIFTI HK40 01
###################################################
dput(formals(dicom2nifti))
(hk40n <- dicom2nifti(hk40))


###################################################
### code chunk number 16: DICOM2NIFTI HK40 02 (eval = FALSE)
###################################################
## image(hk40n)
## orthographic(hk40n, col.crosshairs="green")


###################################################
### code chunk number 17: DICOM2NIFTI HK40 03
###################################################
jpeg("hk40n_image.jpeg", width=480, height=480, quality=95, bg="black")
image(hk40n, zlim=c(0,1024))
dev.off()
jpeg("hk40n_orthographic.jpeg", width=480, height=480, quality=95, bg="black")
orthographic(hk40n, zlim=c(0,1024), col.crosshairs="green")
dev.off()


###################################################
### code chunk number 18: DICOM2NIFTI HK40 04
###################################################
(hk40n <- dicom2nifti(hk40, DIM=4))


###################################################
### code chunk number 19: RIDER Neuro MRI (eval = FALSE)
###################################################
## subject <- "1086100996"
## DCM <- readDICOM(subject, verbose=TRUE)
## seriesInstanceUID <- extractHeader(DCM$hdr, "SeriesInstanceUID", FALSE)
## for (uid in unique(seriesInstanceUID)) {
##   index <- which(unlist(lapply(DCM$hdr, function(x) uid %in% x$value)))
##   uid.dcm <- list(hdr=DCM$hdr[index], img=DCM$img[index])
##   patientsName <- extractHeader(uid.dcm$hdr, "PatientsName", FALSE)
##   studyDate <- extractHeader(uid.dcm$hdr, "StudyDate", FALSE)
##   seriesDescription <- extractHeader(uid.dcm$hdr, "SeriesDescription", FALSE)
##   fname <- paste(gsub("[^0-9A-Za-z]", "", 
##                       unique(c(patientsName, studyDate, seriesDescription))), 
##                  collapse="_")
##   cat("##  ", fname, fill=TRUE)
##   if (gsub("[^0-9A-Za-z]", "", unique(seriesDescription)) == "axtensor") {
##     D <- 4
##     reslice <- FALSE
##   } else {
##     D <- 3
##     reslice <- TRUE
##   }
##   uid.nifti <- dicom2nifti(uid.dcm, DIM=D, reslice=reslice,
##                            descrip=c("PatientID", "SeriesDescription"))
##   writeNIfTI(uid.nifti, fname)
## }

Try the oro.dicom package in your browser

Any scripts or data that you put into this service are public.

oro.dicom documentation built on Oct. 30, 2019, 9:59 a.m.