影像波段融合的控制台小程序Fusion.exe,需要打开cmd,然后需要在cmd中输入
融合程序路径 影像宽度w 影像高度h 波段数n 影像1路径 影像2路径……影像n路径 融合后影像路径
1
如果只需要波段融合成一副影像,那直接在控制台调用程序并输入参数即可。但这次需要将236幅每6个波段的影像进行波段融合,手动一次次来的话,我选择狗带。
要是把在cmd输入的参数换成变量就好了,我们可以通过for循环和变量可以达到让cmd重复执行相似的命令。
2. 使用python进行批处理
我们这里主要运用了os.system()函数。os模块中的system()函数可以方便地运行其他程序或者脚本。相当于在Windows的cmd窗口中输入的命令。
主要需要4个步骤:
1. 导入os模块
import os
1
2. 输入要执行的命令
command = 'ipconfig' #要执行的命令(这里以命令ipconfig为例),相当于直接在windows的cmd窗口中输入的命令。
1
3. 调用os.system()函数
os.system(command) #调用os.system()函数,参数为上面定义的command.
1
4. for循环1-3 步骤
将代码保存为 自定义文件名.py ,在cmd执行下面命令。
python 自定义文件名.py #注意:安装python时,需要设置环境变量
1
————————————————
版权声明:本文为CSDN博主「Kenighto」
下面Python代码来演示如何编程处理心血管冠脉造影DICOM图像信息。1. 导入主要框架:SimpleITK、pydicom、PIL、cv2和numpy
import SimpleITK as sitk
from PIL import Image
import pydicom
import numpy as np
import cv2
2. 应用SimpleITK框架来读取DICOM文件的矩阵信息。如果DICOM图像是三维螺旋CT图像,则帧参数则代表CT扫描层数;而如果是造影动态电影图像,则帧参数就是15帧/秒的电影图像帧数。
def loadFile(filename):
ds = sitk.ReadImage(filename)
img_array = sitk.GetArrayFromImage(ds)
frame_num, width, height = img_array.shape
return img_array, frame_num, width, height
3. 应用pydicom来提取患者信息。
def loadFileInformation(filename):
information = {}
ds = pydicom.read_file(filename)
information['PatientID'] = ds.PatientID
information['PatientName'] = ds.PatientName
information['PatientBirthDate'] = ds.PatientBirthDate
information['PatientSex'] = ds.PatientSex
information['StudyID'] = ds.StudyID
information['StudyDate'] = ds.StudyDate
information['StudyTime'] = ds.StudyTime
information['InstitutionName'] = ds.InstitutionName
information['Manufacturer'] = ds.Manufacturer
information['NumberOfFrames'] = ds.NumberOfFrames
return information
4. 应用PIL来检查图像是否被提取。
def showImage(img_array, frame_num = 0):
img_bitmap = Image.fromarray(img_array[frame_num])
return img_bitmap
5. 采用CLAHE (Contrast Limited Adaptive Histogram Equalization)技术来优化图像。
def limitedEqualize(img_array, limit = 4.0):
img_array_list = []
for img in img_array:
clahe = cv2.createCLAHE(clipLimit = limit, tileGridSize = (8,8))
img_array_list.append(clahe.apply(img))
img_array_limited_equalized = np.array(img_array_list)
return img_array_limited_equalized
接到的需求是对文件夹下包括子目录所有影像进行投影变换,在网上找了找,大家的代码好像和需求不太一致,自己写了一个小工具。
思路是遍历文件夹所有.tif文件。
1.用os.walk()函数来获取路径和文件名
2.用 if 语句限制读取后缀为.tif的文件
3.将文件路径和文件名组合起来
4.调用arcpy.ProjectRaster_management语句投影变换并输出
由于刚刚接触python,难点主要在于os.walk()目录的读取这个函数的了解上。
以下是代码
#coding = utf-8import os
import arcpy
from arcpy import *
#定义一个函数,第一个参数是一个集合,用来接收所有.tif的路径。第二个函数是指定的文件夹。
def huoqu(jieshou,lujing):
for dirpath,dirnames,filenames in os.walk(lujing):
for filename in filenames:
if os.path.splitext(filename)[1] == '.tif':
file1 = dirpath+'\\'+filename
jieshou.append(file1)
#这里变量的设置,GetParameterAsText函数来获取对应在python工具箱中的位置
env.workspace = GetParameterAsText(0)
work = env.workspace
ref = GetParameterAsText(1)
tifz = []
#调用自定义的函数
huoqu(tifz,work)
#对所有的影像进行循环投影变换,并且将输出路径设置为指定的文件夹+原本的名字
for file in tifz:
out = GetParameterAsText(2)+"/"+ os.path.basename(file)
ProjectRaster_management(file,out,ref)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)