|
七、处理程序
Rem ****************************************************
Rem This is a protocol for Bone minerel density(BMD). *
Rem October 30 2003 *
Rem ****************************************************
Dim mainScreen As Screen 'The main screen
Dim mainVP() As Viewport 'The viewports on the main screen
Dim number_of_vports As Integer 'The number of viewports
Dim MaxImages As Integer
Dim ImageItems() As Image
Dim MaxCurves As Integer
Dim CurveItems() As Curve
Dim img1 As Image
Dim img2 As Image
Dim CurFrame1 As Integer
Dim CurFrame2 As Integer
Dim rval As Integer
Dim Water_roi As Roi
Dim K2HPO4_roi As Roi
Dim Lum_comp_Roi As Roi 'ROI of Lumbar Substntia Compacta
Dim Lum_spon_roi As Roi 'ROI of Lumbar Substntia spongiosa
Dim coll_fem_comp_Roi As Roi 'ROI of collum femoris Substntia Compacta
Dim coll_fem_spon_Roi As Roi 'ROI of collum femoris Substntia spongiosa
Dim Water_evreage As Double
Dim K2HPO4_evreage As Double
Dim Lum_comp_evreage As Double
Dim Lum_spon_evreage As Double
Dim coll_fem_comp_evreage As Double
Dim coll_fem_spon_evreage As Double
Dim Lum_comp_BMD As Double
Dim Lum_spon_BMD As Double
Dim coll_fem_comp_BMD As Double
Dim coll_fem_spon_BMD As Double
Dim Vp1 As Viewport
Dim Vp2 As Viewport
Dim Vp3 As Viewport
Dim Vp4 As Viewport
Dim ImageStats As iStatsInfo
Dim BMDAnnot As Annot
Dim AnStr As String
Const CK=300 'consistency of K2HPO4
Sub Main
Set mainScreen=CreateScreen("basic1.rt")
number_of_vports = ListViewPorts(mainScreen,mainVP)
Display mainScreen
retb = SelectTools(True,SCROLL_TOOL,CINE_TOOL,ANNOT_TOOL,COLOURMAP_TOOL,ROI_TOOL)
Load ImageItems(0)
Set img1 = ImageItems(0)
Set Vp1 = GetViewport("cell1")
Display img1, vp1
vp1.color=0
mainVP(0).DisplayFrame = 7
PostPrompt "Seclect Image"
CurFrame1 = mainVP(0).DisplayFrame
Rem calculat water HU
Set Water_Roi = ROICircle(img1,32,128,5,CurFrame1,"Water")
Water_Roi.OutlineColor=2
Water_Roi.InteractiveOn =TRUE
Water_Roi.Selected = TRUE
PostPrompt "Position Water ROI"
Water_Roi.InteractiveOn =false
Water_Roi.Selected = false
rval = Statistics(img1, CurFrame1, ImageStats, Water_Roi )
Water_evreage=ImageStats.mean
Rem calculat K2HPO4 HU
Set K2HPO4_Roi = ROICircle(img1,64,128,5,CurFrame1,"K2HPO4")
K2HPO4_Roi.outlinecolor=4
K2HPO4_Roi.InteractiveOn =TRUE
K2HPO4_Roi.Selected = TRUE
PostPrompt "Position K2HPO4 ROI"
K2HPO4_Roi.InteractiveOn =false
K2HPO4_Roi.Selected = false
rval = Statistics(img1, CurFrame1, ImageStats, K2HPO4_Roi )
K2HPO4_evreage=ImageStats.mean
Rem calculat Lumbar Substntia Compacta HU
Set Lum_comp_Roi = ROIbox(img1,100,100,4,2,CurFrame1,"compacta")
Lum_comp_Roi.outlinecolor=0
Lum_comp_Roi.InteractiveOn =TRUE
Lum_comp_Roi.Selected = TRUE
PostPrompt "Position Lumbar Substntia Compacta"
Lum_comp_Roi.InteractiveOn =false
Lum_comp_Roi.Selected = false
rval = Statistics(img1, CurFrame1, ImageStats, Lum_comp_Roi )
Lum_comp_evreage=ImageStats.mean
Rem calculat Lumbar Substntia spongiosa HU
Set Lum_spon_Roi = ROICircle(img1,128,128,5,CurFrame1,"spongiosa")
Lum_spon_Roi.outlinecolor=1
Lum_spon_Roi.InteractiveOn =TRUE
Lum_spon_Roi.Selected = TRUE
PostPrompt "Position Lumbar Substntia Compacta"
Lum_spon_Roi.InteractiveOn =false
Lum_spon_Roi.Selected = false
rval = Statistics(img1, CurFrame1, ImageStats, Lum_spon_Roi )
Lum_spon_evreage=ImageStats.mean
mainVP(0).DisplayFrame = 7
PostPrompt "Seclect Image"
CurFrame2 = mainVP(0).DisplayFrame
Rem calculat collum femoris Substntia Compacta HU
Set coll_fem_comp_Roi = ROIbox(img1,100,100,4,2,CurFrame2,"compacta")
coll_fem_comp_Roi.outlinecolor=0
coll_fem_comp_Roi.InteractiveOn =TRUE
coll_fem_comp_Roi.Selected = TRUE
PostPrompt "Position collum femoris Substntia Compacta"
coll_fem_comp_Roi.InteractiveOn =false
coll_fem_comp_Roi.Selected = false
rval = Statistics(img1, CurFrame2, ImageStats, coll_fem_comp_Roi )
coll_fem_comp_evreage=ImageStats.mean
Rem calculat collum femoris Substntia spongiosa HU
Set coll_fem_spon_Roi = ROIELLIPSE(img1,64,128,4,3,CurFrame2,"spongiosa")
coll_fem_spon_Roi.outlinecolor=1
coll_fem_spon_Roi.InteractiveOn =TRUE
coll_fem_spon_Roi.Selected = TRUE
PostPrompt "Position collum femoris Substntia Compacta"
coll_fem_spon_Roi.InteractiveOn =false
coll_fem_spon_Roi.Selected = false
rval = Statistics(img1, CurFrame2, ImageStats, coll_fem_spon_Roi )
coll_fem_spon_evreage=ImageStats.mean
Rem calculat BMD
Lum_comp_BMD=(Lum_comp_evreage- Water_evreage)*CK/ (K2HPO4_evreage-Water_evreage) 'calculat BMD of Lumbar Substntia Compacta
Lum_spon_BMD=(Lum_spon_evreage- Water_evreage)*CK/ (K2HPO4_evreage-Water_evreage) 'calculat BMD of Lumbar Substntia spongiosa
coll_fem_comp_BMD=(coll_fem_comp_evreage- Water_evreage)*Ck/ (K2HPO4_evreage-Water_evreage) 'calculat BMD of collum femoris Substntia Compacta
coll_fem_spon_BMD=(coll_fem_spon_evreage- Water_evreage)*CK/ (K2HPO4_evreage-Water_evreage) 'calculat BMD of collum femoris Substntia spongiosa
Rem display the results
Set mainScreen=CreateScreen("basic2.rt")
number_of_vports = ListViewPorts(mainScreen,mainVP)
Display mainScreen
retb = SelectTools(True,SCROLL_TOOL,CINE_TOOL,ANNOT_TOOL,COLOURMAP_TOOL,ROI_TOOL)
Load ImageItems(0)
Set img1 = ImageItems(0)
Set Vp1 = GetViewport("cell1")
vp1.color=0
Display img1, vp1
MainVP(0).DisplayFrame = Curframe1
Set img2=Extract(img1,Curframe2,Curframe2)
Set Vp3 = GetViewport("cell3")
vp3.color=0
Display img2,vp3
Set Vp2 = GetViewport("cell2")
Anstr = "Bone minerel density(BMD) "
Set BMDAnnot = AnnotText(Vp2, 0, 0.4, AnStr)
Anstr ="Lumbar Substntia Compacta "
Anstr = Anstr & format(Lum_comp_BMD, "0.00") &"mg/mL"
Set BMDAnnot = AnnotText(Vp2, 0, 0.5, AnStr)
Anstr ="Lumbar Substntia spongiosa "
Anstr = Anstr & format(Lum_spon_BMD, "0.00") &"mg/mL"
Set BMDAnnot = AnnotText(Vp2, 0, 0.6, AnStr)
Set Vp4 = GetViewport("cell4")
Anstr = "Bone minerel density(BMD) "
Set BMDAnnot = AnnotText(Vp4, 0, 0.4, AnStr)
Anstr ="collum femoris Substntia Compacta "
Anstr = Anstr & format(coll_fem_comp_BMD, "0.00") &"mg/mL"
Set BMDAnnot = AnnotText(Vp4, 0, 0.5, AnStr)
Anstr ="collum femoris Substntia spongiosa "
Anstr = Anstr & format(coll_fem_spon_BMD, "0.00") &"mg/mL"
Set BMDAnnot = AnnotText(Vp4, 0, 0.6, AnStr)
End Sub
Function DataValidate(dv_Message As String,_
sel_image_list() As Image,_
numImages As Integer,_
sel_curve_list() As Curve,_
numCurves As Integer) As Integer
Dim item As Integer
Dim dbVal As Variant
maxImages = 0
maxCurves = 0
For item = 0 To numImages-1
MaxImages = MaxImages + 1
Redim Preserve ImageItems(MaxImages)
set ImageItems(item) = sel_image_list(item)
Next item
For item = 0 To numCurves-1
MaxCurves = MaxCurves + 1
Redim Preserve CurveItems(MaxCurves)
set CurveItems(item) = sel_curve_list(item)
Next item
dv_Message = "No Error message"
DataValidate = 1
End Function
|