链接: https://rigorousanalytics.blogspot.com/
API: https://rdrr.io/rforge/oro.dicom/api/
安装
install.packages('oro.dicom')
单文件的读取
#单个DICOM数据的读取
fname <-system.file(file.path("dcm", "Abdo.dcm"),package="oro.dicom")
abdo <- readDICOMFile(fname)
names(abdo)
head(abdo$hdr)
多文件的读取
##多DICOM文件的读取
fname <-"C:/data/test"
hk40 <- readDICOM(fname)
#查看文件数量
unlist(lapply(hk40,length))
##获取文件信息
hk40.info <- dicomTable(hk40$hdr)
write.csv(hk40.info,file="hk40_header.csv")
## 查看图像
pixel_data <- hk40$img
# 将pixelData转换为数据框
pixel_data_df <- as.data.frame(pixel_data)
write.csv(pixel_data_df, "pixel_data.csv",row.names = FALSE)
常用方法
##获取其中的一些信息
load(system.file("hk-40/hk40.RData",package="oro.dicom"))
hk40.info <- dicomTable(hk40$hdr)##获取文件信息
sliceloc.col <- which(hk40$hdr[[1]]$name == "SliceLocation")
sliceLocation <- as.numeric(hk40.info[, sliceloc.col])
##获取时间序列信息
seriesTime <- extractHeader(hk40$hdr, "SeriesTime", numeric=FALSE)
##时间格式转化
str2time(seriesTime)
##单文件展示
image(t(abdo$img),col=grey(0:64/64), axes=FALSE, xlab="", ylab="")
##多文件展示
hk40n <- dicom2nifti(hk40)##格式转化
image(hk40n)
##添加坐标,定位
orthographic(hk40n,col.crosshairs="green")
##jpeg保存
jpeg("hk40n_image.jpeg",width=480, height=480, quality=95, bg="black")
image(hk40n,zlim=c(0,1024))
dev.off()
##NIfTI保存
writeNIfTI(hk40n,"asa.nifti")