Changeset 2178


Ignore:
Timestamp:
Mar 18, 2016 12:19:38 PM (7 years ago)
Author:
vondreele
Message:

new GetImageZ in G2imgGui to read images & correct for dark, background & flat background
used at beginning of UpdateImageData?, in OnIntegrate?, in OnIntegrateAll? & whenever back, dark or flat background is changed
G2plot - removed image readt stuff & removed flatback

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIimgGUI.py

    r2174 r2178  
    5252################################################################################
    5353
     54def GetImageZ(G2frame,data):
     55    '''Gets image & applies dark, background & flat background corrections
     56    '''
     57   
     58    Npix,imagefile,imagetag = G2frame.PatternTree.GetImageLoc(G2frame.Image)
     59    imagefile = G2IO.CheckImageFile(G2frame,imagefile)
     60    sumImg = G2IO.GetImageData(G2frame,imagefile,True,ImageTag=imagetag)
     61    darkImg,darkScale = data['dark image']
     62    backImg,backScale = data['background image']           
     63    if darkImg:
     64        Did = G2gd.GetPatternTreeItemId(G2frame, G2frame.root, darkImg)
     65        Npix,imagefile,imagetag = G2frame.PatternTree.GetImageLoc(Did)
     66        imagefile = G2IO.CheckImageFile(G2frame,imagefile)
     67        darkImage = G2IO.GetImageData(G2frame,imagefile,True,ImageTag=imagetag)
     68        sumImg += darkImage*darkScale
     69    if backImg:     #ignores any transmission effect in the background image
     70        Bid = G2gd.GetPatternTreeItemId(G2frame, G2frame.root, backImg)
     71        Npix,imagefile,imagetag = G2frame.PatternTree.GetImageLoc(Bid)
     72        imagefile = G2IO.CheckImageFile(G2frame,imagefile)
     73        backImage = G2IO.GetImageData(G2frame,imagefile,True,ImageTag=imagetag)
     74        Bdata = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,Bid,'Image Controls'))
     75        if darkImg:
     76            Did = G2gd.GetPatternTreeItemId(G2frame, G2frame.root,darkImg)
     77            Npix,imagefile,imagetag = G2frame.PatternTree.GetImageLoc(Did)
     78            imagefile = G2IO.CheckImageFile(G2frame,imagefile)
     79            darkImage = G2IO.GetImageData(G2frame,imagefile,True,ImageTag=imagetag)
     80            backImage += darkImage*darkScale               
     81        sumImg += backImage*backScale
     82    sumImg -= data['Flat Bkg']
     83    return sumImg
     84   
     85
    5486def UpdateImageData(G2frame,data):
    5587   
     
    69101        G2frame.dataFrame.CreateStatusBar()
    70102    G2frame.dataDisplay = wx.Panel(G2frame.dataFrame)
     103    G2frame.ImageZ = GetImageZ(G2frame,data)
    71104    mainSizer = wx.BoxSizer(wx.VERTICAL)
    72105    mainSizer.Add(wx.StaticText(G2frame.dataDisplay,
     
    149182            style = wx.PD_ELAPSED_TIME|wx.PD_AUTO_HIDE)
    150183        try:
    151             Npix,imagefile,imagetag = G2frame.PatternTree.GetImageLoc(G2frame.Image)
    152             sumImg = G2IO.GetImageData(G2frame,imagefile,True,ImageTag=imagetag)
    153             darkImg,darkScale = data['dark image']
    154             backImg,backScale = data['background image']           
    155             if darkImg:
    156                 Did = G2gd.GetPatternTreeItemId(G2frame, G2frame.root, darkImg)
    157                 Npix,imagefile,imagetag = G2frame.PatternTree.GetImageLoc(Did)
    158                 darkImage = G2IO.GetImageData(G2frame,imagefile,True,ImageTag=imagetag)
    159                 sumImg += darkImage*darkScale
    160             if backImg:     #ignores any transmission effect in the background image
    161                 Bid = G2gd.GetPatternTreeItemId(G2frame, G2frame.root, backImg)
    162                 Npix,imagefile,imagetag = G2frame.PatternTree.GetImageLoc(Bid)
    163                 backImage = G2IO.GetImageData(G2frame,imagefile,True,ImageTag=imagetag)
    164                 Bdata = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,Bid,'Image Controls'))
    165                 if darkImg:
    166                     Did = G2gd.GetPatternTreeItemId(G2frame, G2frame.root,darkImg)
    167                     Npix,imagefile,imagetag = G2frame.PatternTree.GetImageLoc(Did)
    168                     darkImage = G2IO.GetImageData(G2frame,imagefile,True,ImageTag=imagetag)
    169                     backImage += darkImage*darkScale               
    170                 sumImg += backImage*backScale
    171             G2frame.Integrate = G2img.ImageIntegrate(sumImg-data['Flat Bkg'],data,masks,blkSize,dlg)
     184            sumImg = GetImageZ(G2frame,data)
     185            G2frame.Integrate = G2img.ImageIntegrate(sumImg,data,masks,blkSize,dlg)
    172186            Id = G2IO.SaveIntegration(G2frame,G2frame.PickId,data,(event is None))
    173187            G2frame.PatternId = Id
     
    212226                                style = wx.PD_ELAPSED_TIME|wx.PD_AUTO_HIDE)
    213227                            try:
    214                                 Npix,imagefile,imagetag = G2frame.PatternTree.GetImageLoc(id)
    215                                 image = G2IO.GetImageData(G2frame,imagefile,True,ImageTag=imagetag)
    216                                 darkImg,darkScale = data['dark image']
    217                                 backImg,backScale = data['background image']           
    218                                 if darkImg:
    219                                     id = G2gd.GetPatternTreeItemId(G2frame, G2frame.root, darkImg)
    220                                     Npix,imagefile,imagetag = G2frame.PatternTree.GetImageLoc(id)
    221                                     darkImage = G2IO.GetImageData(G2frame,imagefile,True,ImageTag=imagetag)
    222                                     image += darkScale*darkImage
    223                                 if backImg:
    224                                     id = G2gd.GetPatternTreeItemId(G2frame, G2frame.root, backImg)
    225                                     Npix,imagefile,imagetag = G2frame.PatternTree.GetImageLoc(id)
    226                                     backImage = G2IO.GetImageData(G2frame,imagefile,True,ImageTag=imagetag)
    227                                     Bdata = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,id,'Image Controls'))
    228                                     if darkImg:
    229                                         id = G2gd.GetPatternTreeItemId(G2frame, G2frame.root,darkImg)
    230                                         Npix,imagefile,imagetag = G2frame.PatternTree.GetImageLoc(id)
    231                                         darkImage = G2IO.GetImageData(G2frame,imagefile,True,ImageTag=imagetag)
    232                                         backImage += darkImage*darkScale               
    233                                     image += backImage*backScale
    234                                 image -= Data['Flat Bkg']
     228                                image = GetImageZ(G2frame,Data)
    235229                                Masks = G2frame.PatternTree.GetItemPyData(
    236230                                    G2gd.GetPatternTreeItemId(G2frame,id, 'Masks'))
     
    816810        def OnBackImage(event):
    817811            data['background image'][0] = backImage.GetValue()
     812            G2frame.ImageZ = GetImageZ(G2frame,data)
     813            G2plt.PlotExposedImage(G2frame,event=event)
    818814           
    819815        def OnDarkImage(event):
    820816            data['dark image'][0] = darkImage.GetValue()
     817            G2frame.ImageZ = GetImageZ(G2frame,data)
    821818            G2plt.PlotExposedImage(G2frame,event=event)
    822819           
     
    828825                pass
    829826            flatbkg.SetValue("%.0f"%(data['Flat Bkg']))   
     827            G2frame.ImageZ = GetImageZ(G2frame,data)
    830828            G2plt.PlotExposedImage(G2frame,event=event)
    831829
     
    837835                pass
    838836            backMult.SetValue("%.3f" % (data['background image'][1]))          #reset in case of error
     837            G2frame.ImageZ = GetImageZ(G2frame,data)
     838            G2plt.PlotExposedImage(G2frame,event=event)
    839839       
    840840        def OnDarkMult(event):
     
    845845                pass
    846846            darkMult.SetValue("%.3f" % (data['dark image'][1]))          #reset in case of error
     847            G2frame.ImageZ = GetImageZ(G2frame,data)
    847848            G2plt.PlotExposedImage(G2frame,event=event)
    848849       
     
    22922293        # do integration
    22932294        size,imagefile,imagetag = G2frame.PatternTree.GetImageLoc(imgId)
    2294         G2frame.ImageZ = G2IO.GetImageData(G2frame,imagefile,True,imagetag)
     2295#        G2frame.ImageZ = G2IO.GetImageData(G2frame,imagefile,True,imagetag)     #pointless since done in OnIntegrate?
    22952296        masks = G2frame.PatternTree.GetItemPyData(
    22962297                G2gd.GetPatternTreeItemId(G2frame,G2frame.Image, 'Masks'))
  • trunk/GSASIIplot.py

    r2174 r2178  
    137137       
    138138        self.plotList = []
    139            
     139       
    140140    def OnNotebookKey(self,event):
    141141        '''Called when a keystroke event gets picked up by the notebook window
     
    36823682def PlotImage(G2frame,newPlot=False,event=None,newImage=True):
    36833683    '''Plot of 2D detector images as contoured plot. Also plot calibration ellipses,
    3684     masks, etc.
     3684    masks, etc. Plots whatever is in G2frame.ImageZ
    36853685
    36863686    :param wx.Frame G2frame: main GSAS-II frame
     
    37123712        Page.canvas.SetToolTipString('')
    37133713        sizexy = Data['size']
    3714         FlatBkg = Data.get('Flat Bkg',0.)
    37153714        if event.xdata and event.ydata and len(G2frame.ImageZ):                 #avoid out of frame errors
    37163715            Page.canvas.SetToolTipString('%8.2f %8.2fmm'%(event.xdata,event.ydata))
     
    37393738                Int = 0
    37403739                if (0 <= xpix <= sizexy[0]) and (0 <= ypix <= sizexy[1]):
    3741                     Int = G2frame.ImageZ[ypix][xpix]-int(FlatBkg)
     3740                    Int = G2frame.ImageZ[ypix][xpix]
    37423741                tth,azm,D,dsp = G2img.GetTthAzmDsp(xpos,ypos,Data)
    37433742                Q = 2.*math.pi/dsp
    3744                 fields = ['','Detector 2-th =%9.3fdeg, dsp =%9.3fA, Q = %6.5fA-1, azm = %7.2fdeg, I = %6d'%(tth,dsp,Q,azm,Int)]
    3745                 if G2frame.MaskKey in ['p','f']:
    3746                     fields[1] = 'Polygon/frame mask pick - LB next point, RB close polygon'
    3747                 elif G2frame.StrainKey:
    3748                     fields[0] = 'd-zero pick active'
    3749                 G2frame.G2plotNB.status.SetFields(fields)
     3743                if G2frame.StrainKey:
     3744                    G2frame.G2plotNB.status.SetStatusText('d-zero pick active',0)
     3745                elif G2frame.MaskKey in ['p','f']:
     3746                    G2frame.G2plotNB.status.SetStatusText('Polygon/frame mask pick - LB next point, RB close polygon',1)
     3747                else:
     3748                     G2frame.G2plotNB.status.SetStatusText( \
     3749                        'Detector 2-th =%9.3fdeg, dsp =%9.3fA, Q = %6.5fA-1, azm = %7.2fdeg, I = %6d'%(tth,dsp,Q,azm,Int),1)
    37503750
    37513751    def OnImPlotKeyPress(event):
     
    38143814            return
    38153815        pixelSize = Data['pixelSize']
    3816         FlatBkg = Data.get('Flat Bkg',0.)
    38173816        scalex = 1000./pixelSize[0]
    38183817        scaley = 1000./pixelSize[1]
     
    38283827                    Xpix = Xpos*scalex
    38293828                    Ypix = Ypos*scaley
    3830                     xpos,ypos,I,J = G2img.ImageLocalMax(G2frame.ImageZ-FlatBkg,pixLimit,Xpix,Ypix)
     3829                    xpos,ypos,I,J = G2img.ImageLocalMax(G2frame.ImageZ,pixLimit,Xpix,Ypix)
    38313830                    if I and J:
    38323831                        xpos += .5                              #shift to pixel center
     
    38933892            StrSta['d-zero'].append({'Dset':dsp,'Dcalc':0.0,'pixLimit':10,'cutoff':0.5,
    38943893                'ImxyObs':[[],[]],'ImtaObs':[[],[]],'ImtaCalc':[[],[]],'Emat':[1.0,1.0,1.0]})
    3895             R,r = G2img.MakeStrStaRing(StrSta['d-zero'][-1],G2frame.ImageZ-FlatBkg,Data)
     3894            R,r = G2img.MakeStrStaRing(StrSta['d-zero'][-1],G2frame.ImageZ,Data)
    38963895            if not len(R):
    38973896                del StrSta['d-zero'][-1]
     
    39993998           
    40003999    # PlotImage execution starts here
     4000    if not len(G2frame.ImageZ):
     4001        return
    40014002    xylim = []
    40024003    try:
     
    40444045        pass
    40454046    size,imagefile,imagetag = G2frame.PatternTree.GetImageLoc(G2frame.Image)
    4046     dark = Data.get('dark image',[0,''])
    4047     if imagefile != G2frame.oldImagefile or G2frame.oldImageTag != imagetag or dark[0]: # always reread to apply dark correction
    4048         imagefile = G2IO.CheckImageFile(G2frame,imagefile)
    4049         if not imagefile:
    4050             G2frame.G2plotNB.Delete('2D Powder Image')
    4051             return
    4052         if imagetag:
    4053             G2frame.PatternTree.SetItemPyData(G2frame.Image,
    4054                                               [size,(imagefile,imagetag)])
    4055         else:
    4056             G2frame.PatternTree.SetItemPyData(G2frame.Image,[size,imagefile])         
    4057         G2frame.ImageZ = G2IO.GetImageData(G2frame,imagefile,imageOnly=True,ImageTag=imagetag)
    4058         if dark[0]:
    4059             dsize,darkfile,darktag = G2frame.PatternTree.GetImageLoc(
    4060                 G2gd.GetPatternTreeItemId(G2frame,G2frame.root,dark[0]))
    4061             darkImg = G2IO.GetImageData(G2frame,darkfile,imageOnly=True,ImageTag=darktag)
    4062             G2frame.ImageZ += dark[1]*darkImg
    4063         G2frame.oldImagefile = imagefile # save name of the last image file read
    4064         G2frame.oldImageTag = imagetag   # save tag of the last image file read
    4065     #else:
    4066     #    if GSASIIpath.GetConfigValue('debug'): print('Skipping image reread')
    40674047
    40684048    imScale = 1
     
    40844064    #do threshold mask - "real" mask - others are just bondaries
    40854065    Zlim = Masks['Thresholds'][1]
    4086     FlatBkg = Data.get('Flat Bkg',0.0)
    40874066    wx.BeginBusyCursor()
    40884067    try:
    40894068        if newImage:                   
    40904069            Imin,Imax = Data['range'][1]
    4091             MA = ma.masked_greater(ma.masked_less(G2frame.ImageZ,Zlim[0]+FlatBkg),Zlim[1]+FlatBkg)
     4070            MA = ma.masked_greater(ma.masked_less(G2frame.ImageZ,Zlim[0]),Zlim[1])
    40924071            MaskA = ma.getmaskarray(MA)
    4093             A = G2img.ImageCompress(MA,imScale)-FlatBkg
     4072            A = G2img.ImageCompress(MA,imScale)
    40944073            AM = G2img.ImageCompress(MaskA,imScale)
    40954074            if G2frame.logPlot:
Note: See TracChangeset for help on using the changeset viewer.