From 5be82aaef054bf2b318cc0150f40e6b8c3e9bef7 Mon Sep 17 00:00:00 2001 From: frankster85 Date: Wed, 19 Oct 2016 01:17:32 +0200 Subject: [PATCH 01/36] Nullth exercise sheet for WS1617 --- .../dmip/DMIP_FanBeamBackProjector2D.java | 329 ------------- .../rsl/tutorial/dmip/DMIP_ParallelBeam.java | 306 ------------- .../dmip/DefectPixelInterpolation.java | 404 ---------------- .../rsl/tutorial/dmip/ImageUndistortion.java | 324 ------------- src/edu/stanford/rsl/tutorial/dmip/Intro.java | 97 ++-- src/edu/stanford/rsl/tutorial/dmip/Proton.png | Bin 36448 -> 0 bytes .../stanford/rsl/tutorial/dmip/RANSAC.java | 212 --------- .../rsl/tutorial/dmip/Registration1.java | 153 ------- .../rsl/tutorial/dmip/Registration2.java | 325 ------------- .../rsl/tutorial/dmip/Registration3.java | 254 ----------- .../stanford/rsl/tutorial/dmip/SVDandFT.java | 431 ------------------ .../stanford/rsl/tutorial/dmip/Sinogram0.tif | Bin 107391 -> 0 bytes .../stanford/rsl/tutorial/dmip/Sinogram1.tif | Bin 107390 -> 0 bytes .../stanford/rsl/tutorial/dmip/Sinogram2.tif | Bin 107390 -> 0 bytes src/edu/stanford/rsl/tutorial/dmip/T1.png | Bin 34094 -> 0 bytes .../stanford/rsl/tutorial/dmip/frame32.jpg | Bin 20960 -> 0 bytes .../stanford/rsl/tutorial/dmip/frame90.jpg | Bin 21090 -> 0 bytes src/edu/stanford/rsl/tutorial/dmip/mask.bmp | Bin 14518 -> 0 bytes .../stanford/rsl/tutorial/dmip/testimg.bmp | Bin 14518 -> 0 bytes .../rsl/tutorial/dmip/undistorted.jpg | Bin 14360 -> 0 bytes .../stanford/rsl/tutorial/dmip/yu_fill.jpg | Bin 16680 -> 0 bytes 21 files changed, 39 insertions(+), 2796 deletions(-) delete mode 100644 src/edu/stanford/rsl/tutorial/dmip/DMIP_FanBeamBackProjector2D.java delete mode 100644 src/edu/stanford/rsl/tutorial/dmip/DMIP_ParallelBeam.java delete mode 100644 src/edu/stanford/rsl/tutorial/dmip/DefectPixelInterpolation.java delete mode 100644 src/edu/stanford/rsl/tutorial/dmip/ImageUndistortion.java delete mode 100644 src/edu/stanford/rsl/tutorial/dmip/Proton.png delete mode 100644 src/edu/stanford/rsl/tutorial/dmip/RANSAC.java delete mode 100644 src/edu/stanford/rsl/tutorial/dmip/Registration1.java delete mode 100644 src/edu/stanford/rsl/tutorial/dmip/Registration2.java delete mode 100644 src/edu/stanford/rsl/tutorial/dmip/Registration3.java delete mode 100644 src/edu/stanford/rsl/tutorial/dmip/SVDandFT.java delete mode 100644 src/edu/stanford/rsl/tutorial/dmip/Sinogram0.tif delete mode 100644 src/edu/stanford/rsl/tutorial/dmip/Sinogram1.tif delete mode 100644 src/edu/stanford/rsl/tutorial/dmip/Sinogram2.tif delete mode 100644 src/edu/stanford/rsl/tutorial/dmip/T1.png delete mode 100644 src/edu/stanford/rsl/tutorial/dmip/frame32.jpg delete mode 100644 src/edu/stanford/rsl/tutorial/dmip/frame90.jpg delete mode 100644 src/edu/stanford/rsl/tutorial/dmip/mask.bmp delete mode 100644 src/edu/stanford/rsl/tutorial/dmip/testimg.bmp delete mode 100644 src/edu/stanford/rsl/tutorial/dmip/undistorted.jpg delete mode 100644 src/edu/stanford/rsl/tutorial/dmip/yu_fill.jpg diff --git a/src/edu/stanford/rsl/tutorial/dmip/DMIP_FanBeamBackProjector2D.java b/src/edu/stanford/rsl/tutorial/dmip/DMIP_FanBeamBackProjector2D.java deleted file mode 100644 index 17780bc8..00000000 --- a/src/edu/stanford/rsl/tutorial/dmip/DMIP_FanBeamBackProjector2D.java +++ /dev/null @@ -1,329 +0,0 @@ -package edu.stanford.rsl.tutorial.dmip; - -import edu.stanford.rsl.conrad.data.numeric.Grid1D; -import edu.stanford.rsl.conrad.data.numeric.Grid2D; -import edu.stanford.rsl.conrad.data.numeric.InterpolationOperators; -import edu.stanford.rsl.conrad.data.numeric.NumericPointwiseOperators; -import edu.stanford.rsl.conrad.filtering.redundancy.ParkerWeightingTool; -import edu.stanford.rsl.conrad.geometry.shapes.simple.PointND; -import edu.stanford.rsl.conrad.geometry.shapes.simple.StraightLine; -import edu.stanford.rsl.conrad.numerics.SimpleOperators; -import edu.stanford.rsl.conrad.numerics.SimpleVector; -import edu.stanford.rsl.conrad.utils.ImageUtil; -import edu.stanford.rsl.tutorial.fan.FanBeamBackprojector2D; -import edu.stanford.rsl.tutorial.fan.redundancy.ParkerWeights; -import edu.stanford.rsl.tutorial.filters.RamLakKernel; -import edu.stanford.rsl.tutorial.filters.SheppLoganKernel; -import ij.IJ; -import ij.ImageJ; - -/** - * Exercise 7 of Diagnostic Medical Image Processing (DMIP) - * @author Marco Boegel - * - */ -public class DMIP_FanBeamBackProjector2D { - - //source to detector distance - private double focalLength; - //increment of rotation angle beta between two projections in [rad] - private double betaIncrement; - //number of pixels on the detector - private int detectorPixels; - //number of acquired projections - private int numProjs; - //spacing - mm per pixel - private double detectorSpacing; - //detector length in [mm] - private double detectorLength; - //max rotation angle beta in [rad] - private double maxBeta; - - public enum RampFilterType {NONE, RAMLAK, SHEPPLOGAN}; - - public DMIP_FanBeamBackProjector2D( ) - { - - } - - /** - * Initialize all relevant parameters for the reconstruction - * @param sino the sinogram - * @param focalLength source to detector distance - * @param maxRot maximum rotation angle in [rad] at which the sinogram was acquired - */ - public void setSinogramParams(Grid2D sino, double focalLength, double maxRot) - { - this.focalLength = focalLength; - this.numProjs = sino.getHeight(); - this.detectorPixels = sino.getWidth(); - this.detectorSpacing = sino.getSpacing()[0]; - this.detectorLength = detectorSpacing*detectorPixels; - - - double halfFanAngle = 0;//TODO - System.out.println("Half fan angle: " + halfFanAngle*180.0/Math.PI); - //TODO - this.betaIncrement = maxBeta /(double) numProjs; - System.out.println("Short-scan range: " + maxBeta*180/Math.PI); - } - - /** - * A pixel driven backprojection algorithm. Cosine, Redundancy and Ramp filters need to be applied separately beforehand - * @param sino the filtered sinogram - * @param recoSize the dimension of the output image - * @param spacing the spacing of the output image - * @return the reconstruction - */ - public Grid2D backproject(Grid2D sino, int[] recoSize, double[] spacing) - { - Grid2D result = new Grid2D(recoSize[0], recoSize[1]); - result.setSpacing(spacing[0], spacing[1]); - - for(int p = 0; p < numProjs; p++) - { - //First, compute the rotation angle beta and pre-compute cos(beta), sin(beta) - float beta = (float) (betaIncrement * p); - float cosBeta = (float) Math.cos(beta); - float sinBeta = (float) Math.sin(beta); - - //Compute direction and normal of the detector at the current rotation angle - final PointND detBorder = new PointND();//TODO - final SimpleVector dirDet = new SimpleVector();//TODO - final StraightLine detLine = new StraightLine(detBorder, dirDet); - - //Compute rotated source point - final PointND source = new PointND(focalLength * cosBeta, focalLength*sinBeta, 0.d); - - //pick current projection - Grid1D currProj = sino.getSubGrid(p); - - //pixel driven BP: iterate over all output image pixels - for(int x = 0; x < recoSize[0]; x++) - { - //transform the image pixel coordinates to world coordinates - float wx =0; //TODO - - for(int y = 0; y < recoSize[1]; y++) - { - float wy = 0;//TODO - - final PointND reconstructionPointWorld = new PointND(wx, wy, 0.d); - - //intersect the projection ray with the detector - //TODO - final PointND detPixel = new PointND();//TODO - - float valueTemp; - - if(detPixel != null) - { - //calculate position of the projected point on the 1D detector - final SimpleVector pt = SimpleOperators.subtract(detPixel.getAbstractVector(), detBorder.getAbstractVector()); - double length = pt.normL2(); - //deal with truncation - if(pt.getElement(0)*dirDet.getElement(0)+pt.getElement(1)*dirDet.getElement(1)<0) - { - length -= length; - } - double t = (length - 0.5d)/detectorSpacing; - - //check if projection of this world point hit the detector - if(currProj.getSize()[0] <= t+1 || t< 0) - continue; - - float value = InterpolationOperators.interpolateLinear(currProj, t); - - //Apply distance weighting - //see Fig 1a) exercise sheet - //TODO - //TODO - float dWeight = 0;//TODO - valueTemp = (float) (value / (dWeight*dWeight)); - } - else - { - //projected pixel lies outside the detector - valueTemp = 0.f; - } - - result.addAtIndex(x, y, valueTemp); - } - } - } - - //adjust scale. required because of shortscan - float normalizationFactor = (float) (numProjs / Math.PI); - NumericPointwiseOperators.divideBy(result, normalizationFactor); - - - return result; - } - - /** - * Cosine weighting for 2D sinograms - * @param sino the sinogram - * @return the cosine weighted sinogram - */ - public Grid2D applyCosineWeights(Grid2D sino) - { - Grid2D result = new Grid2D(sino); - - //Create 1D kernel (identical for each projection) - Grid1D cosineKernel = new Grid1D(detectorPixels); - for(int i=0; i Math.PI *2.d) { - continue; - } - - // implement the conditions as described in Parker's paper - if (beta <= 2 * (delta - gamma)) { - float val = 0; //TODO - if (Double.isNaN(val)){ - continue; - } - parker.setAtIndex(t, b , val); - - } else if (beta < Math.PI - 2.d * gamma) { - parker.setAtIndex(t, b , 1); - } - else if (beta <= (Math.PI + 2.d * delta) + 1e-12) { - float val = 0;//TODO - if (Double.isNaN(val)){ - continue; - } - parker.setAtIndex(t, b , val); - } - } - } - - // Correct for scaling due to varying angle - NumericPointwiseOperators.multiplyBy(parker, (float)( maxBeta / (Math.PI))); - parker.show(); - - //apply the parker weights to the sinogram - NumericPointwiseOperators.multiplyBy(result, parker); - - return result; - } - - - public static void main(String arg[]) - { - ImageJ ij = new ImageJ(); - - double focalLength = 600.f; - //maximum rotation angle in [rad] - double maxRot = Math.PI; - //choose the ramp filter (none, ramlak, shepplogan) - RampFilterType filter = RampFilterType.RAMLAK; - - DMIP_FanBeamBackProjector2D fbp = new DMIP_FanBeamBackProjector2D(); - - //Load and visualize the projection image data - String filename = "D:/02_lectures/DMIP/exercises/2014/6/Sinogram0.tif"; - Grid2D sino = ImageUtil.wrapImagePlus(IJ.openImage(filename)).getSubGrid(0); - sino.show("Sinogram"); - - //getSubGrid() only yields rows. -> Transpose so that each row is a projection - sino = sino.getGridOperator().transpose(sino); - sino.show(); - - - //Initialize parameters - double detectorSpacing = 0.5; - sino.setSpacing(detectorSpacing, 0); - fbp.setSinogramParams(sino, focalLength, maxRot); - sino.setSpacing(fbp.detectorSpacing, fbp.betaIncrement); - - //apply cosine weights - Grid2D cosineWeighted = fbp.applyCosineWeights(sino); - cosineWeighted.show("After Cosine Weighting"); - - //apply parker redundancy weights - Grid2D parkerWeighted = fbp.applyParkerWeights(cosineWeighted); - parkerWeighted.show("After Parker Weighting"); - - //apply ramp filter - switch(filter){ - case RAMLAK: - RamLakKernel ramLak = new RamLakKernel(fbp.detectorPixels, fbp.detectorSpacing); - for(int i = 0; i < fbp.numProjs; i++) - { - ramLak.applyToGrid(parkerWeighted.getSubGrid(i)); - } - parkerWeighted.show("After RamLak Filter"); - break; - case SHEPPLOGAN: - SheppLoganKernel sheppLogan = new SheppLoganKernel(fbp.detectorPixels, fbp.detectorSpacing); - for(int i = 0; i < fbp.numProjs; i++) - { - sheppLogan.applyToGrid(parkerWeighted.getSubGrid(i)); - } - parkerWeighted.show("After Shepp-Logan Filter"); - break; - case NONE: - default: - - } - - - //setup reconstruction image size - int[] recoSize = new int[]{128, 128}; - double[] spacing = new double[]{1.0, 1.0}; - - Grid2D reconstruction = fbp.backproject(parkerWeighted, recoSize, spacing); - reconstruction.show("Reconstructed image"); - - - //Compare our backprojection algorithm to the tutorial code - FanBeamBackprojector2D fbp2 = new FanBeamBackprojector2D(focalLength, fbp.detectorSpacing, fbp.betaIncrement,recoSize[0], recoSize[1]); - fbp2.backprojectPixelDriven(parkerWeighted).show("Tutorial reconstruction"); - - } -} - - diff --git a/src/edu/stanford/rsl/tutorial/dmip/DMIP_ParallelBeam.java b/src/edu/stanford/rsl/tutorial/dmip/DMIP_ParallelBeam.java deleted file mode 100644 index 90aa6017..00000000 --- a/src/edu/stanford/rsl/tutorial/dmip/DMIP_ParallelBeam.java +++ /dev/null @@ -1,306 +0,0 @@ -package edu.stanford.rsl.tutorial.dmip; - -import java.util.ArrayList; - -import edu.stanford.rsl.conrad.data.numeric.Grid1D; -import edu.stanford.rsl.conrad.data.numeric.Grid1DComplex; -import edu.stanford.rsl.conrad.data.numeric.Grid2D; -import edu.stanford.rsl.conrad.data.numeric.InterpolationOperators; -import edu.stanford.rsl.conrad.data.numeric.NumericPointwiseOperators; -import edu.stanford.rsl.conrad.geometry.shapes.simple.Box; -import edu.stanford.rsl.conrad.geometry.shapes.simple.PointND; -import edu.stanford.rsl.conrad.geometry.shapes.simple.StraightLine; -import edu.stanford.rsl.conrad.geometry.transforms.Transform; -import edu.stanford.rsl.conrad.geometry.transforms.Translation; -import edu.stanford.rsl.conrad.numerics.SimpleOperators; -import edu.stanford.rsl.conrad.numerics.SimpleVector; -import edu.stanford.rsl.tutorial.phantoms.SheppLogan; -import ij.ImageJ;; - -/** - * Exercise 5 of Diagnostic Medical Image Processing (DMIP) - * @author Bastian Bier - * - */ - -public class DMIP_ParallelBeam { - - - public enum RampFilterType {NONE, RAMLAK, SHEPPLOGAN}; - - - /** - * Forward projection of the phantom onto the detector - * Rule of thumb: Always sample in the domain where you expect the output! - * Thus, we sample at the detector pixel positions and sum up the informations along one ray - * - * @param grid the image - * @param maxTheta the angular range in radians - * @param deltaTheta the angular step size in radians - * @param maxS the detector size in [mm] - * @param deltaS the detector element size in [mm] - */ - - public Grid2D projectRayDriven(Grid2D grid, double maxTheta, double deltaTheta, double maxS, double deltaS) { - - int maxSIndex = (int) (maxS / deltaS + 1); - int maxThetaIndex = (int) (maxTheta / deltaTheta + 1); - - final double samplingRate = 3.d; // # of samples per pixel - Grid2D sino = new Grid2D(new float[maxThetaIndex*maxSIndex], maxSIndex, maxThetaIndex); - sino.setSpacing(deltaS, deltaTheta); - - // set up image bounding box in WC - Translation trans = new Translation( - -(grid.getSize()[0] * grid.getSpacing()[0])/2, -(grid.getSize()[1] * grid.getSpacing()[1])/2, -1); - Transform inverse = trans.inverse(); - - Box b = new Box((grid.getSize()[0] * grid.getSpacing()[0]), (grid.getSize()[1] * grid.getSpacing()[1]), 2); - b.applyTransform(trans); - - for(int e=0; e points = b.intersect(line); - - // only if we have intersections - if (2 != points.size()){ - if(points.size() == 0) { - line.getDirection().multiplyBy(-1.d); - points = b.intersect(line); - } - if(points.size() == 0) - continue; - } - - PointND start = points.get(0); // [mm] - PointND end = points.get(1); // [mm] - - // get the normalized increment - SimpleVector increment = new SimpleVector( - end.getAbstractVector()); - increment.subtract(start.getAbstractVector()); - double distance = increment.normL2(); - increment.divideBy(distance * samplingRate); - - double sum = .0; - start = inverse.transform(start); - - // compute the integral along the line. - for (double t = 0.0; t < distance * samplingRate; ++t) { - PointND current = new PointND(start); - current.getAbstractVector().add(increment.multipliedBy(t)); - - double x = current.get(0) / grid.getSpacing()[0], - y = current.get(1) / grid.getSpacing()[1]; - - if (grid.getSize()[0] <= x + 1 - || grid.getSize()[1] <= y + 1 - || x < 0 || y < 0) - continue; - - sum += InterpolationOperators.interpolateLinear(grid, x, y); - } - - // normalize by the number of interpolation points - sum /= samplingRate; - // write integral value into the sinogram. - sino.setAtIndex(i, e, (float)sum); - } - } - return sino; - } - - /** - * Sampling of projections is defined in the constructor. - * Backprojection of the projections/sinogram - * Rule of thumb: Always sample in the domain where you expect the output! - * Here, we want to reconstruct the volume, thus we sample in the reconstructed grid! - * The projections are created pixel driven! - * - * @param sino the sinogram - * @param imageSizeX - * @param imageSizeY - * @param pxSzXMM - * @param pxSzYMM - */ - - public Grid2D backprojectPixelDriven(Grid2D sino, int imageSizeX, int imageSizeY, float pxSzXMM, float pxSzYMM) { - - int maxThetaIndex = sino.getSize()[1]; - double deltaTheta = sino.getSpacing()[1]; - int maxSIndex = sino.getSize()[0]; - double deltaS = sino.getSpacing()[0]; - double maxS = (maxSIndex-1) * deltaS; - - Grid2D grid = new Grid2D(imageSizeX, imageSizeY); - grid.setSpacing(pxSzXMM, pxSzYMM); - grid.setOrigin(-(grid.getSize()[0]*grid.getSpacing()[0])/2, -(grid.getSize()[1]*grid.getSpacing()[1])/2); - - // loop over the projection angles - for (int i = 0; i < maxThetaIndex; i++) { - // compute actual value for theta - double theta = deltaTheta * i; - // precompute sine and cosines for faster computation - double cosTheta = Math.cos(theta); - double sinTheta = Math.sin(theta); - // get detector direction vector - SimpleVector dirDetector = new SimpleVector(sinTheta,cosTheta); - // loops over the image grid - for (int x = 0; x < grid.getSize()[0]; x++) { - for (int y = 0; y < grid.getSize()[1]; y++) { - // compute world coordinate of current pixel - double[] w = grid.indexToPhysical(x, y); - // wrap into vector - SimpleVector pixel = new SimpleVector(w[0], w[1]); - // project pixel onto detector - double s = SimpleOperators.multiplyInnerProd(pixel, dirDetector); - // compute detector element index from world coordinates - s += maxS/2; // [mm] - s /= deltaS; // [GU] - // get detector grid - Grid1D subgrid = sino.getSubGrid(i); - // check detector bounds, continue if out of array - if (subgrid.getSize()[0] <= s + 1 - || s < 0) - continue; - // get interpolated value - float val = InterpolationOperators.interpolateLinear(subgrid, s); - // sum value to sinogram - grid.addAtIndex(x, y, val); - } - - } - } - // apply correct scaling - NumericPointwiseOperators.divideBy(grid, (float) (maxThetaIndex / Math.PI)); - return grid; - } - - - /** - * Filtering the sinogram with a high pass filter - * - * The ramp filters are defined in the spatial domain but - * they are applied in the frequency domain. - * Remember: a convolution in the spatial domain corresponds to a - * multiplication in the frequency domain. - * - * Both, the sinogram and the ramp filter are transformed into - * the frequency domain and multiplied there. - * - * @param sinogram a line of the sinogram - * - */ - public Grid1D rampFiltering(Grid1D sinogram, RampFilterType filter){ - - double deltaS = 1; - - // Initialize the ramp filter - // Define the filter in the spatial domain on the full padded size! - Grid1DComplex ramp = new Grid1DComplex(sinogram.getSize()[0]); - - int paddedSize = ramp.getSize()[0]; - - if(filter == RampFilterType.RAMLAK) - { - // TODO: implement the ram-lak filter in the spatial domain - - } - else if(filter == RampFilterType.SHEPPLOGAN) - { - // TODO: implement the Shepp-Logan filter in the spatial domain - - } - else - { - // if no filtering is used - return sinogram; - } - - // TODO: Transform ramp filter into frequency domain - - - Grid1DComplex sinogramF = new Grid1DComplex(sinogram,true); - // TODO: Transform the input sinogram signal into the frequency domain - - - // TODO: Multiply the ramp filter with the transformed sinogram - - - // TODO: Backtransformation - - - // Crop the image to its initial size - Grid1D ret = new Grid1D(sinogram); - ret = sinogramF.getRealSubGrid(0, sinogram.getSize()[0]); - - return ret; - } - - public static void main(String[] args) - { - ImageJ ij = new ImageJ(); - - DMIP_ParallelBeam parallel = new DMIP_ParallelBeam(); - - // 0. Parameters - - // size of the phantom - int phantomSize = 128; - // projection image range - double angularRange = Math.PI; - // number of projection images - int projectionNumber = 180; - // angle in between adjacent projections - double angularStepSize = angularRange / projectionNumber; - // detector size in [mm] - float detectorSize = 200; - // size of a detector Element [mm] - float detectorSpacing = 1.0f; - // filterType: NONE, RAMLAK, SHEPPLOGAN - RampFilterType filter = RampFilterType.NONE; - - // 1. Create the Shepp Logan Phantom - SheppLogan sheppLoganPhantom = new SheppLogan(phantomSize); - sheppLoganPhantom.show(); - - // 2. Acquire forward projection images with a parallel projector - Grid2D sinogram = parallel.projectRayDriven(sheppLoganPhantom, angularRange, angularStepSize, detectorSize, detectorSpacing); - sinogram.show("The Sinogram"); - Grid2D filteredSinogram = new Grid2D(sinogram); - - // 4. Ramp Filtering - for (int theta = 0; theta < sinogram.getSize()[1]; ++theta) - { - // Filter each line of the sinogram independently - Grid1D tmp = parallel.rampFiltering(sinogram.getSubGrid(theta), filter); - - for(int i = 0; i < tmp.getSize()[0]; i++) - { - filteredSinogram.putPixelValue(i, theta, tmp.getAtIndex(i)); - } - } - - filteredSinogram.show("Filtered Sinogram"); - - // 5. Reconstruct the object with the information in the sinogram - Grid2D reco = parallel.backprojectPixelDriven(filteredSinogram, phantomSize, phantomSize, detectorSpacing, detectorSpacing); - reco.show("Reconstruction"); - } - -} diff --git a/src/edu/stanford/rsl/tutorial/dmip/DefectPixelInterpolation.java b/src/edu/stanford/rsl/tutorial/dmip/DefectPixelInterpolation.java deleted file mode 100644 index f9b72faf..00000000 --- a/src/edu/stanford/rsl/tutorial/dmip/DefectPixelInterpolation.java +++ /dev/null @@ -1,404 +0,0 @@ -package edu.stanford.rsl.tutorial.dmip; - -import java.util.ArrayList; - -import edu.stanford.rsl.conrad.data.generic.datatypes.Complex; -import edu.stanford.rsl.conrad.data.numeric.Grid2D; -import edu.stanford.rsl.conrad.data.numeric.Grid2DComplex; -import edu.stanford.rsl.conrad.data.numeric.Grid3D; -import edu.stanford.rsl.conrad.data.numeric.NumericGridOperator; -import edu.stanford.rsl.conrad.filtering.MedianFilteringTool; -import edu.stanford.rsl.conrad.utils.ImageUtil; -import ij.IJ; -import ij.ImageJ; - -/** - * - * Exercise 4 of Diagnostic Medical Image Processing (DMIP) - * @author Marco Boegel - * - */ -public class DefectPixelInterpolation { - - public DefectPixelInterpolation() - { - - } - - /** - * Spectral deconvolution for defect pixel interpolation - * "Defect Interpolation in Digital Radiography - How Object-Oriented Transform Coding Helps", - * T. Aach, V. Metzler, SPIE Vol. 4322: Medical Imaging, February 2001 - * @param image corrupted image with defect pixels - * @param mask binary image mask of the defect pixels (0: defect, 1: fine) - * @param maxIter maximum number of iterations - * @param zeroPadding enables zero padding for the input images. Images are enlarged to size of next power of 2 and filled with zeros - * @return image, where defect pixels are interpolated - */ - public Grid2D interpolateSpectral(Grid2D image, Grid2D mask, int maxIter, boolean zeroPadding) - { - //padding - //TODO - //TODO - - //fourier transform - Grid2DComplex G = new Grid2DComplex(1,1);//TODO - Grid2DComplex W = new Grid2DComplex(1,1);//TODO - //TODO - //TODO - - int[] dim = G.getSize(); - - int[] halfDim = {dim[0]/2, dim[1]/2}; - - double maxDeltaE_G_Ratio = Double.POSITIVE_INFINITY; - double maxDeltaE_G_Thresh = 1.0e-6; - - Grid2DComplex FHat = new Grid2DComplex(dim[0], dim[1], false); - Grid2DComplex FHatNext = new Grid2DComplex(dim[0], dim[1], false); - - //Setup visualization - double lastEredVal = 0; - //Visualize every 100th iteration - Grid3D visualize = new Grid3D(image.getWidth(), image.getHeight(), maxIter/100); - - for(int i = 0; i < maxIter; i++) - { - //Check for convergence - if(maxDeltaE_G_Ratio <= maxDeltaE_G_Thresh) - { - System.out.println("maxDeltaE_G_Ratio = " + maxDeltaE_G_Ratio); - break; - } - - //In the i-th iteration select line pair s1,t1 - //which maximizes the energy reduction [Paragraph after Eq. (16) in the paper] - double maxDeltaE_G = Double.NEGATIVE_INFINITY; - //create arraylist to store lines (in case multiple maxima are found) - //TODO - ArrayList sj1 = null; //HINT - for(int x = 0; x < dim[0]; x++) - { - for(int y = 0; y < dim[1]; y++) - { - float val = G.getAtIndex(x, y) ; - if( val > maxDeltaE_G) - { - //TODO - //TODO - //TODO - }else if(val == maxDeltaE_G) { - //TODO - } - } - } - //if there were more indices than one with the same max_value, pick a random one of these - int idx = (int) Math.floor(Math.random() * sj1.size()); - int s1 = sj1.get(idx)[0]; - int t1 = sj1.get(idx)[1]; - - //Calculate the ratio of energy reduction in comparison to the last iteration - if(i > 0) - { - maxDeltaE_G_Ratio = Math.abs(maxDeltaE_G - lastEredVal/maxDeltaE_G); - } - - lastEredVal = maxDeltaE_G; - - //Compute the corresponding linepair s2, t2: - //mirror the positions at halfDim - int s2 = 0;//TODO - int t2 = 0;//TODO - - //[Paragraph after Eq. (17) in the paper] - int twice_s1 = (2*s1) % dim[0]; - int twice_t1 = (2*t1) % dim[1]; - - - //Estimate FHat - //4 special cases, where only a single line can be selected: - //(0,0), (0, halfHeight), (halfWidth,0), (halfWidth, halfHeight) - boolean specialCase = false; - if( (s1 == 0 && t1 == 0 ) || - (s1 == halfDim[0] && t1 == 0) || - (s1 == 0 && t1 == halfDim[1]) || - (s1 == halfDim[0] && t1 == halfDim[1])) - { - System.out.println("Special Case"); - specialCase = true; - //Eq. 15 - //FHat = N*(G(s,t)/W(0,0)) - //TODO compute FHatNext, use Complex class - //TODO - //TODO - //TODO - Complex res = new Complex();//HINT - FHatNext.setRealAtIndex(s1, t1, (float) res.getReal()); - FHatNext.setImagAtIndex(s1, t1, (float) res.getImag()); - } - else - { - //General case - //Compute FHatNext for the general case Eq.9 - //TODO - //TODO - //TODO - //TODO - //TODO - Complex res_s1t1 = new Complex();//HINT - Complex res_s2t2 = new Complex();//HINT - FHatNext.setRealAtIndex(s1, t1, (float) res_s1t1.getReal()); - FHatNext.setImagAtIndex(s1, t1, (float) res_s1t1.getImag()); - FHatNext.setRealAtIndex(s2, t2, (float) res_s2t2.getReal()); - FHatNext.setImagAtIndex(s2, t2, (float) res_s2t2.getImag()); - } - - //End iteration step by forming the new error spectrum - updateErrorSpectrum(G, FHatNext, FHat, W, s1, t1, specialCase); - - //Get rid of rounding errors - //G(t1,s1) and G(t2,s2) should be zero - G.setAtIndex(s1, t1, 0); - if(!specialCase) - { - G.setAtIndex(s2, t2, 0); - } - - FHat = new Grid2DComplex(FHatNext); - - if(i % 100 == 0) - { - //For visualization, apply IFFT to the estimation - Grid2DComplex FHatV = new Grid2DComplex(FHat); - FHatV.transformInverse(); - Grid2D vis = new Grid2D(image); - - //Fill in the defect mask pixels with current estimation and remove the zero padding - for(int x = 0; x < vis.getWidth(); x++) - { - for(int y = 0; y < vis.getHeight(); y++) - { - if(mask.getAtIndex(x, y) == 0) - { - vis.setAtIndex(x, y, FHatV.getRealAtIndex(x, y)); - } - } - } - visualize.setSubGrid(i/100, vis); - - } - - } - - visualize.show(); - - //Compute the inverse fourier transform of the estimated image - FHat.transformInverse(); - - //Fill in the defect mask pixels with the current estimation and remove the zero padding - Grid2D result = new Grid2D(image); - //TODO - //TODO - //TODO - //TODO - - return result; - } - - - /** - * - * Do the convolution of the m-times-n matrix F and W - * s,t is the position of the selected line pair, the convolution is simplified in the following way: - * G(k1,k2) = F(k1,k2) 'conv' W(k1,k2) - * = (F(s,t)W(k1-s,k2-t) + F*(s,t)W(k1+s,k2+t)) / (MN) - * where F* is the conjugate complex. - * - * @param G Fourier transformation of input image - * @param FHatNext currently estimated FT of the fixed image - * @param FHat previous estimated FT of the fixed image - * @param W Fourier transformation of the mask image - * @param s1 position of the selected line pair - * @param t1 position of the selected line pair - * @param specialCase - */ - private static void updateErrorSpectrum(Grid2DComplex G, Grid2DComplex FHatNext, Grid2DComplex FHat, Grid2DComplex W, int s1, int t1, boolean specialCase) { - int[] sz = FHatNext.getSize(); - - // Accumulation: Update pair (s1,t1),(s2,t2) - Complex F_st = new Complex(FHatNext.getRealAtIndex(s1, t1) - FHat.getRealAtIndex(s1, t1), FHatNext.getImagAtIndex(s1, t1) - FHat.getImagAtIndex(s1, t1)); - Complex F_st_conj = F_st.getConjugate(); - - int MN = sz[0] * sz[1]; - - // Compute the new error spectrum - for(int j = 0; j < sz[1]; j++) - { - for(int i = 0; i < sz[0]; i++) - { - Complex GVal; - if(specialCase) - { - int xneg = (i - s1) % sz[0]; - int yneg = (j - t1) % sz[1]; - - if(xneg < 0) - { - xneg = sz[0] + xneg; - } - if(yneg < 0) - { - yneg = sz[1] + yneg; - } - - GVal = new Complex(G.getRealAtIndex(i, j), G.getImagAtIndex(i, j)); - Complex WNeg = new Complex(W.getRealAtIndex(xneg, yneg), W.getImagAtIndex(xneg, yneg)); - GVal.sub( ( F_st.mul(WNeg) ).div(MN) ); - - } - else - { - int xpos = (i + s1) % sz[0]; - int ypos = (j + t1) % sz[1]; - int xneg = (i - s1) % sz[0]; - int yneg = (j - t1) % sz[1]; - - if(xneg < 0) - { - xneg = sz[0] + xneg; - } - if(yneg < 0) - { - yneg = sz[1] + yneg; - } - - Complex WPos = new Complex(W.getRealAtIndex(xpos, ypos), W.getImagAtIndex(xpos, ypos)); - Complex WNeg = new Complex(W.getRealAtIndex(xneg, yneg), W.getImagAtIndex(xneg, yneg)); - GVal = new Complex(G.getRealAtIndex(i, j), G.getImagAtIndex(i, j)); - GVal = GVal.sub( ( ( F_st.mul(WNeg) ).add( F_st_conj.mul(WPos) ) ).div(MN) ); - - - } - - G.setRealAtIndex(i, j, (float) GVal.getReal()); - G.setImagAtIndex(i, j, (float) GVal.getImag()); - } - } - } - - public Grid2D interpolateMedian(Grid2D image, Grid2D defects, int kernelWidth, int kernelHeight) - { - //Pad the image. Otherwise, the filter will ignore kernelWidth/2 at each side of the image - Grid2D paddedImage = new Grid2D(image.getWidth()+kernelWidth, image.getHeight()+kernelHeight); - - for(int i = 0; i (d-1): extrema - // d=0: constant (horizontal line with y-intercept a_0 -> f(x)=a_0) - // d=1: oblique line with y-intercept a_0 & slope a_1 -> f(x)=a_0 + a_1 x - // d=2: parabola - // d>=2: continuous non-linear curve - // E.g. d=5: 4 extrema - // d = 10 -> NumKoeff: 66 -> but only 64 lattice points are known - int degree = 5; //Polynomial's degree: 2,...,10 - - // Number of Coefficients - // TODO: - int numCoeff = 0; - - // Number of Correspondences - // TODO: - int numCorresp = 0; - - // Print out of the used parameters - System.out.println("Polynom of degree: " + degree); - System.out.println("Number of Coefficients: " + numCoeff); - System.out.println("Number of Correspondences: " + numCorresp); - - // 3.Create the matrix A - SimpleMatrix A = new SimpleMatrix(numCorresp, numCoeff); - A.zeros(); - - // Realign the grid matrix into a vector - // Easier access in the next step - SimpleVector Xu2_vec = new SimpleVector(numCorresp); - SimpleVector Yu2_vec = new SimpleVector(numCorresp); - SimpleVector Xd2_vec = new SimpleVector(numCorresp); - SimpleVector Yd2_vec = new SimpleVector(numCorresp); - - for(int i = 0; i < ny; i++) - { - for(int j = 0; j < nx; j++) - { - Xu2_vec.setElementValue(i * ny + j, Xu2.getElement(j, i)); - Yu2_vec.setElementValue(i * ny + j, Yu2.getElement(j, i)); - Xd2_vec.setElementValue(i * ny + j, Xd2.getElement(j, i)); - Yd2_vec.setElementValue(i * ny + j, Yd2.getElement(j, i)); - } - } - - // Compute matrix A - for(int r = 0; r < numCorresp; r++) - { - int cc = 0; - for(int i = 0; i <= degree; i++) - { - for(int j = 0; j <= (degree-i); j++) - { - // TODO: - - } - } - } - - // Compute the pseudo-inverse of A with the help of the SVD (class: DecompositionSVD) - // TODO - // TODO - - - // Compute the distortion coefficients - // TODO - // TODO - - - // 4. Compute the distorted grid points (xDist, yDist) which are used to sample the - // distorted image to get the undistorted image - // (x,y) is the position in the undistorted image and (XDist,YDist) the - // position in the distorted (observed) X-ray image. - - Grid2D xDist = new Grid2D(imSize, imSize); - Grid2D yDist = new Grid2D(imSize, imSize); - - for(int x = 0; x < imSize; x++) - { - for(int y = 0; y < imSize; y++) - { - int cc = 0; - for(int k = 0; k <= degree; k++) - { - for(int l = 0; l <= degree - k; l++) - { - // TODO - // TODO - // TODO - } - } - } - } - - Grid2D undistortedImage = new Grid2D(imSize, imSize); - - for(int i = 0; i < imSize; i++) - { - for(int j = 0; j < imSize; j++) - { - // TODO - // TODO - } - } - undistortedImage.show("Undistorted Image"); - - Grid2D differenceImage = (Grid2D) NumericPointwiseOperators.subtractedBy(quadraticImage, undistortedImage); - differenceImage.show("diffImage"); - } - - - - public static void main(String[] args) { - ImageJ ij = new ImageJ(); - ImageUndistortion iu = new ImageUndistortion(); - iu.doImageUndstortion(); - } -} diff --git a/src/edu/stanford/rsl/tutorial/dmip/Intro.java b/src/edu/stanford/rsl/tutorial/dmip/Intro.java index 3ed8c5bb..52d93bfe 100644 --- a/src/edu/stanford/rsl/tutorial/dmip/Intro.java +++ b/src/edu/stanford/rsl/tutorial/dmip/Intro.java @@ -17,8 +17,8 @@ /** * Introduction to the CONRAD Framework - * Exercise 1 of Diagnostic Medical Image Processing (DMIP) - * @author Marco Boegel + * Exercise 0 of Diagnostic Medical Image Processing (DMIP) + * @author Frank Schebesch, Marco Boegel * */ @@ -29,14 +29,14 @@ public static void gridIntro(){ //Define the image size int imageSizeX = 256; - int imageSizeY = 256; + int imageSizeY = 384; //Define an image //Hint: Import the package edu.stanford.rsl.conrad.data.numeric.Grid2D //TODO //Draw a circle - int radius = 50; + int radius = 55; //Set all pixels within the circle to 100 int insideVal = 100; @@ -49,17 +49,17 @@ public static void gridIntro(){ //Display image //TODO - //Copy an image + //Copy an image into a new container //TODO - //copy.show("Copy of circle"); + copy.show("Copy of circle"); //Load an image from file - String filename = "D:/02_lectures/DMIP/exercises/2014/matlab_intro/mr12.dcm"; + String filename = "G:/DMIP/exercises/2016/0/code/exercise/mr12.dcm"; //TODO. Hint: Use IJ and ImageUtil - //mrImage.show(); + mrImage.show(); - //convolution + //prepare convolution by creating the relevant objects //TODO //TODO @@ -72,34 +72,39 @@ public static void gridIntro(){ kernel[i] = 1.f / (kw*kh); } + // test for error and directly show convolved image //TODO //write an image to disk, check the supported output formats - String outFilename ="D:/02_lectures/DMIP/exercises/2014/matlab_intro/mr12out.tif"; + String outFilename ="G:/DMIP/exercises/2016/0/code/solution/mr12out.tif"; //TODO } public static void signalIntro() { - //How can I plot a sine function sin(2*PI*x)? - double stepSize = 0.01; - int plotLength = 500; + //How can I plot a sine function sin(x) + //which has its zeroes at multiples of 3? + double stepSize = 0.02; + int plotLength = 800; double[] y = new double[plotLength]; for(int i = 0; i < y.length; i++) { //TODO + y[i] = val; } VisualizationUtil.createPlot(y).show(); + + // now plot it with the specified x values double[] x = new double [plotLength]; for(int i = 0; i < x.length; i++) { - x[i] = (double) i * stepSize; + //TODO } VisualizationUtil.createPlot(x, y, "sin(x)", "x", "y").show(); @@ -109,24 +114,23 @@ public static void signalIntro() public static void basicIntro() { //Display text - System.out.println("Creating a vector: v1 = [1.0; 2.0; 3.0]"); + System.out.println("Creating a vector: v1 = [3.0; 2.0; 1.0]"); //create column vector //TODO - //System.out.println("v1 = " + v1.toString()); + System.out.println("v1 = " + v1.toString()); //create a randomly initialized vector SimpleVector vRand = new SimpleVector(3); //TODO - //System.out.println("vRand = " + vRand.toString()); + System.out.println("vRand = " + vRand.toString()); //create matrix M 3x3 1 2 3; 4 5 6; 7 8 9 - SimpleMatrix M = new SimpleMatrix(); //TODO - //System.out.println("M = " + M.toString()); + System.out.println("M = " + M.toString()); //determinant of M - //System.out.println("Determinant of matrix m: " + TODO ); + System.out.println("Determinant of matrix m: " + TODO ); //transpose M //TODO @@ -136,9 +140,8 @@ public static void basicIntro() //TODO //get size - int numRows = 0; - int numCols = 0; - //TODO + int numRows = M.getRows(); + int numCols = M.getCols(); //access elements of M System.out.println("M: "); @@ -147,7 +150,7 @@ public static void basicIntro() for(int j = 0; j < numCols; j++) { //TODO - //System.out.print(element + " "); + System.out.print(element + " "); } System.out.println(); } @@ -164,23 +167,23 @@ public static void basicIntro() //Matrix multiplication //TODO - //System.out.println("M^T * M = " + ResMat.toString()); + System.out.println("M^T * M = " + ResMat.toString()); //Matrix vector multiplication //TODO - //System.out.println("M * v1 = " + resVec.toString()); + System.out.println("M * v1 = " + resVec.toString()); //Extract the last column vector from matrix M - //SimpleVector colVector = M.getCol(2); + SimpleVector colVector = M.getCol(2); //Extract the 1x2 subvector from the last column of matrix M //TODO - //System.out.println("[m(0)(2); m(1)(2)] = " + subVector); + System.out.println("[m(0)(2); m(1)(2)] = " + subVector); //Matrix elementwise multiplication //TODO - //System.out.println("M squared Elements: " + MsquaredElem.toString()); + System.out.println("M squared Elements: " + MsquaredElem.toString()); //round vectors SimpleVector vRandCopy = new SimpleVector(vRand); @@ -193,9 +196,9 @@ public static void basicIntro() System.out.println("vRand.ceil() = " + vRand.toString()); //min, max, mean - //double minV1 = v1.min(); - //double maxV1 = v1.max(); - //System.out.println("Min(v1) = " + minV1 + " Max(v1) = " + maxV1); + double minV1 = v1.min(); + double maxV1 = v1.max(); + System.out.println("Min(v1) = " + minV1 + " Max(v1) = " + maxV1); //for matrices: iterate over row or column vectors SimpleVector maxVec = new SimpleVector(M.getCols()); @@ -211,37 +214,15 @@ public static void basicIntro() //Norms //TODO matrix L1 //TODO vector L2 - //System.out.println("||M||_F = " + matrixNormL1); - //System.out.println("||colVec||_2 = " + vecNormL2); + System.out.println("||M||_F = " + matrixNormL1); + System.out.println("||colVec||_2 = " + vecNormL2); //get normalized vector //TODO //normalize vector in-place //TODO - //System.out.println("Normalized colVector: " + colVector.toString()); - - - //SVD - SimpleMatrix A = new SimpleMatrix(3,3); - A.setRowValue(0, new SimpleVector(11, 10, 14)); - A.setRowValue(1, new SimpleVector(12, 11, -13)); - A.setRowValue(2, new SimpleVector(14, 13, -66)); - - System.out.println("A = " + A.toString()); - - //TODO SVD - - //print singular matrix - //System.out.println(svd.getS().toString()); - - //get condition number - //System.out.println("Condition number of A: " + TODO ); - - //Re-compute A = U * S * V^T - //SimpleMatrix temp = SimpleOperators.multiplyMatrixProd(svd.getU(), svd.getS()); - //SimpleMatrix A2 = SimpleOperators.multiplyMatrixProd(temp, svd.getV().transposed()); - //System.out.println("U * S * V^T: " + A2.toString()); - + System.out.println("Normalized colVector: " + colVector.toString()); + System.out.println("||colVec||_2 = " + colVector.norm(VectorNormType.VEC_NORM_L2)); } public static void main(String arg[]) diff --git a/src/edu/stanford/rsl/tutorial/dmip/Proton.png b/src/edu/stanford/rsl/tutorial/dmip/Proton.png deleted file mode 100644 index 1f0d36555d8fdf8f5df3f6ffb8b77d4dc12430e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36448 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,~`BcgV8X@FoFzOl;I^Qisw;tngX0r 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 QR{#J207*qoM6N<$f{^c~tN;K2 diff --git a/src/edu/stanford/rsl/tutorial/dmip/RANSAC.java b/src/edu/stanford/rsl/tutorial/dmip/RANSAC.java deleted file mode 100644 index 35006f56..00000000 --- a/src/edu/stanford/rsl/tutorial/dmip/RANSAC.java +++ /dev/null @@ -1,212 +0,0 @@ -package edu.stanford.rsl.tutorial.dmip; -import edu.stanford.rsl.conrad.numerics.SimpleMatrix; -import edu.stanford.rsl.conrad.numerics.SimpleMatrix.InversionType; -import edu.stanford.rsl.conrad.numerics.SimpleOperators; -import edu.stanford.rsl.conrad.numerics.SimpleVector; -import ij.gui.Plot; -import java.util.ArrayList; - -/** - * Exercise 4 of Diagnostic Medical Image Processing (DMIP) - * @author Bastian Bier - * - */ - -public class RANSAC { - - /** - * Function calculation the ransac model estimate - * - * @param points The point cloud where the line should be fit through - * @param minParam The number of parameters required for the model - * @param p_opt The probability of picking the right points for the models during the iterations - * @param p_out The probability of an outliner - * - * @return solution the parameters of the resulting RANSAC line in a SimpleVector: [m,c] - */ - - public SimpleVector commonRansac(SimpleMatrix points, int mn, double p_opt, double p_out){ - - // Calculating the amount of required iterations - int it = (int) (Math.log(1 - p_opt) / Math.log(1 - Math.pow(1 - p_out, mn)) + 1 ); - - // Error of the best fitted line - double error = Double.POSITIVE_INFINITY; - - // Solution vector - SimpleVector solution = new SimpleVector(mn); - - for(int i = 0; i < it; i++) - { - // Select mn random points - // Calculate the indexes of the points - ArrayList indexes = new ArrayList(); - int randIdx = (int) (Math.random() / (1.f / points.getRows())); - indexes.add(randIdx); - - for(int n = 1; n < mn; n++){ - randIdx = (int) (Math.random() / (1.f / points.getRows())); - - while(indexes.contains(randIdx)) - { - randIdx = (int) (Math.random() / (1.f / points.getRows())); - } - indexes.add(randIdx); - } - - // Calculate the parameters - SimpleMatrix a = new SimpleMatrix(mn,mn); - - for(int n = 0; n < mn; n++){ - a.setRowValue(n, points.getRow(indexes.get(n))); - } - - SimpleVector lineParams= new SimpleVector(mn); - // TODO: estimate the line parameters for the selected points - - - - - // Calculate the error of the estimated line - // update the error and the parameters, if the current line has a smaller error - double cur_err = 0.0; - // TODO: calculate the error of the current line - - - if(cur_err < error) - { - error = cur_err; - solution = lineParams; - } - - } - - return solution; - } - - /** - * Function calculating a line through a point cloud using the SVD - * - * @param points The point cloud where the line should be fit through - * 2 points result in a exact line - * >2 points result in a regression line - * - * @return x_result the parameters of the line in a SimpleVector: [m,c] - */ - public SimpleVector fitline(SimpleMatrix points){ - - // Build up the measurement matrix - SimpleMatrix m = new SimpleMatrix(points.getRows(),2); - SimpleVector b = new SimpleVector(points.getRows()); - m.fill(1); - - for(int i = 0; i < points.getRows(); i++){ - m.setElementValue(i, 0, points.getElement(i, 0)); - b.setElementValue(i, points.getElement(i, 1)); - } - - // Solution vector containing the estimated parameters m and c - SimpleVector x_result = new SimpleVector(2); - - // Calculate the parameters using the Pseudo-Inverse - // TODO: calculate the line parameters, write them in x_result - - return x_result; - } - - /** - * Calculate the error of a line - * - * @param line_params Parameters of the line - * @param points The point cloud where the line should be fit through. - * - * @return error the calculated error - */ - public double lineError(SimpleVector line_params, SimpleMatrix points){ - - // Threshold defining the allowed distance of a point to the line - double thresh = 0.2; - - // TODO: line parameters - - - // TODO: get some point on the line - - - // TODO: calculate normal vector of the line - - - // TODO: calculate distance line to origin - - - // TODO: calculate the distance for each point to the line - // TODO: check if the distance is higher than the threshold - - - // TODO: return the error - return 0; - } - - - public static void main(String[] args) { - - // - RANSAC ransac = new RANSAC(); - - // - // The point cloud is defined - // - - SimpleMatrix pts = new SimpleMatrix(7,2); - pts.setRowValue(0, new SimpleVector(0,0)); - pts.setRowValue(1, new SimpleVector(1,1)); - pts.setRowValue(2, new SimpleVector(2,2)); - pts.setRowValue(3, new SimpleVector(3,3)); - pts.setRowValue(4, new SimpleVector(3.2,1.9)); - pts.setRowValue(5, new SimpleVector(4,4)); - pts.setRowValue(6, new SimpleVector(10,1.8)); - - - // - // Regression Line - // - - // Create a scatter plot of the point cloud and fit a regression line - Plot scatterPlot = new Plot("Regression Line", "X", "Y", Plot.DEFAULT_FLAGS); - scatterPlot.setLimits(0, 11, 0, 5); - scatterPlot.addPoints(pts.getCol(0).copyAsDoubleArray(), pts.getCol(1).copyAsDoubleArray(), Plot.BOX); - scatterPlot.show(); - - // Calculate the regression line through the given point cloud - SimpleVector regressionLine = ransac.fitline(pts); - - // Add the regression line - double y11 = regressionLine.getElement(0) * 11 + regressionLine.getElement(1); - double y0 = regressionLine.getElement(0) * 0 + regressionLine.getElement(1); - scatterPlot.drawLine(0, y0, 11, y11); - - - // - // RANSAC - // - - // Parameters for RANSAC - double p_opt = 0.9999; // probability how likely it is to pick the right mn points - double p_out = 0.2; // probability of an outlier - int min_number = 2; // minimum number of datapoints required to build the model - - // Create a scatter plot of the point cloud and fit a RANSAC line - Plot ransac_plot = new Plot("Ransac Line", "X", "Y", Plot.DEFAULT_FLAGS); - ransac_plot.setLimits(0, 11, 0, 5); - ransac_plot.addPoints(pts.getCol(0).copyAsDoubleArray(), pts.getCol(1).copyAsDoubleArray(), Plot.BOX); - - - // Compute a line using the RANSAC algorithm and plot it - SimpleVector ransacLine = ransac.commonRansac(pts, min_number, p_opt, p_out); - double y1 = ransacLine.getElement(0) * 0 + ransacLine.getElement(1); - double y2 = ransacLine.getElement(0) * 11 + ransacLine.getElement(1); - ransac_plot.drawLine(0, y1, 11, y2); - ransac_plot.show(); - - } -} diff --git a/src/edu/stanford/rsl/tutorial/dmip/Registration1.java b/src/edu/stanford/rsl/tutorial/dmip/Registration1.java deleted file mode 100644 index 00b33287..00000000 --- a/src/edu/stanford/rsl/tutorial/dmip/Registration1.java +++ /dev/null @@ -1,153 +0,0 @@ -package edu.stanford.rsl.tutorial.dmip; - -import edu.stanford.rsl.conrad.numerics.SimpleMatrix; -import edu.stanford.rsl.conrad.numerics.SimpleMatrix.InversionType; -import edu.stanford.rsl.conrad.numerics.SimpleOperators; -import edu.stanford.rsl.conrad.numerics.SimpleVector; -import ij.gui.Plot; - - -/** - * Exercise 7 of Diagnostic Medical Image Processing (DMIP) - * @author Bastian Bier - * - */ -public class Registration1 { - - /** - * Registration method - * Point Correspondences are used to calculate the rotation and translation - * Transformation from p to q - * @param p reference point cloud - * @param q point cloud to be registered - * @return translation and rotation for the registration (phi, t1, t2) - */ - private SimpleVector registrationUsingPointCorrespondences(SimpleMatrix p, SimpleMatrix q){ - - int numPoints = p.getRows(); - - // Build up measurement matrix m - SimpleMatrix m = new SimpleMatrix(numPoints * 2, 4); - - for(int i = 0; i < numPoints * 2; i++) - { - if(i < numPoints) - { - // TODO - // TODO - // TODO - // TODO - } - if(i >= numPoints) - { - // TODO - // TODO - // TODO - // TODO - } - } - - // Build up solution vector b - SimpleVector b = new SimpleVector(2 * numPoints); - - for(int i = 0; i < 2 * numPoints; i++) - { - if(i < numPoints) - { - // TODO - } - - if(i >= numPoints) - { - // TODO - } - } - - // Calculate Pseudo Inverse of m - SimpleMatrix m_inv; - m_inv = m.inverse(InversionType.INVERT_SVD); - - // Calculate Parameters with the help of the Pseudo Inverse - SimpleVector x; - x = SimpleOperators.multiply(m_inv, b); - - double r1 = x.getElement(0); - double r2 = x.getElement(1); - double t1 = x.getElement(2); - double t2 = x.getElement(3); - - - // TODO: normalize r - - - double phi = 0; // TODO - - // Write the result for the translation and the rotation into the result vector - SimpleVector result = new SimpleVector(phi, t1, t2); - - return result; - } - - - private SimpleMatrix applyTransform(SimpleMatrix points, double phi, SimpleVector translation){ - - SimpleMatrix r = new SimpleMatrix(2,2); - // TODO: fill the rotation matrix - - // TODO - // TODO - // TODO - // TODO - - SimpleMatrix transformedPoints = new SimpleMatrix(points.getRows(), points.getCols()); - - for(int i = 0; i < transformedPoints.getRows(); i++) - { - // TODO: transform points - - } - - return transformedPoints; - } - - public static void main(String[] args){ - - // Define Point Cloud - SimpleMatrix p_k = new SimpleMatrix(4,2); - SimpleMatrix q_k = new SimpleMatrix(4,2); - - p_k.setRowValue(0, new SimpleVector(1,2)); - p_k.setRowValue(1, new SimpleVector(3,6)); - p_k.setRowValue(2, new SimpleVector(4,6)); - p_k.setRowValue(3, new SimpleVector(3,4)); - - q_k.setRowValue(0, new SimpleVector(-0.7, 2.1)); - q_k.setRowValue(1, new SimpleVector(-2.1, 6.4)); - q_k.setRowValue(2, new SimpleVector(-1.4, 7.1)); - q_k.setRowValue(3, new SimpleVector(-0.7, 4.9)); - - // Plot Point Cloud - Plot plot = new Plot("Regression Line", "X", "Y", Plot.DEFAULT_FLAGS); - plot.setLimits(-10, 10, -10, 10); - plot.addPoints(p_k.getCol(0).copyAsDoubleArray(), p_k.getCol(1).copyAsDoubleArray(), Plot.BOX); - plot.addPoints(q_k.getCol(0).copyAsDoubleArray(), q_k.getCol(1).copyAsDoubleArray(), Plot.CIRCLE); - - // Calculate registration parameter - Registration1 reg = new Registration1(); - SimpleVector parameter = reg.registrationUsingPointCorrespondences(p_k, q_k); - - // Rotation and translation - double phi = parameter.getElement(0); - SimpleVector translation = new SimpleVector(parameter.getElement(1), parameter.getElement(2)); - - // Transform points - SimpleMatrix transformedPoints = reg.applyTransform(q_k, phi, translation); - - // Add transformed point cloud to the plot - plot.addPoints(transformedPoints.getCol(0).copyAsDoubleArray(), transformedPoints.getCol(1).copyAsDoubleArray(), Plot.CROSS); - plot.show(); - - } - - -} diff --git a/src/edu/stanford/rsl/tutorial/dmip/Registration2.java b/src/edu/stanford/rsl/tutorial/dmip/Registration2.java deleted file mode 100644 index fa9b1f7c..00000000 --- a/src/edu/stanford/rsl/tutorial/dmip/Registration2.java +++ /dev/null @@ -1,325 +0,0 @@ -package edu.stanford.rsl.tutorial.dmip; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.TreeMap; -import java.util.Map.Entry; - -import edu.stanford.rsl.conrad.data.numeric.Grid1D; -import edu.stanford.rsl.conrad.data.numeric.Grid2D; -import edu.stanford.rsl.conrad.data.numeric.Grid3D; -import edu.stanford.rsl.conrad.geometry.transforms.AffineTransform; -import edu.stanford.rsl.conrad.numerics.SimpleMatrix; -import edu.stanford.rsl.conrad.utils.ImageUtil; -import edu.stanford.rsl.conrad.utils.VisualizationUtil; -import edu.stanford.rsl.conrad.numerics.SimpleVector; -import edu.stanford.rsl.jpop.FunctionOptimizer; -import edu.stanford.rsl.jpop.OptimizableFunction; -import edu.stanford.rsl.jpop.OptimizationOutputFunction; -import edu.stanford.rsl.jpop.FunctionOptimizer.OptimizationMode; - -import ij.IJ; -import ij.ImageJ; -import ij.gui.PlotWindow; - - -/** - * Exercise 7 of Diagnostic Medical Image Processing (DMIP) - * Using Mutual Information to solve the registration problem - * @author Bastian Bier - * - */ -public class Registration2 { - - public Grid2D reference = null; - public Grid2D image = null; - - public Grid3D movingStack = null; - - public int iteration = 0; - double[] saveParameters; - - class CostFunction implements OptimizableFunction, OptimizationOutputFunction{ - - private TreeMap resultVisualizer; - - private PlotWindow resultVisualizerPlot; - - @Override - public void setNumberOfProcessingBlocks(int number) { - } - - @Override - public int getNumberOfProcessingBlocks() { - return 1; - } - - @Override - public double evaluate(double[] x, int block) { - - int nrChanges = 0; - for (int i = 0; i < x.length; i++) { - if(saveParameters[i]!=x[i]){ - nrChanges++; - } - } - - // Define Rotation - SimpleMatrix r = new SimpleMatrix(2, 2); - double phi2 = x[0] * (2 * Math.PI) / 360; - r.setElementValue(0, 0, Math.cos(phi2)); - r.setElementValue(0, 1, -Math.sin(phi2)); - r.setElementValue(1, 0, Math.sin(phi2)); - r.setElementValue(1, 1, Math.cos(phi2)); - - // Define translation - double t_x = x[1]; - double t_y = x[2]; - - Grid2D im_tmp = new Grid2D(image); - - // Perform rotation/translation - SimpleVector t = new SimpleVector(t_x, t_y); - AffineTransform affine = new AffineTransform(r, t); - im_tmp.applyTransform(affine); - - if (nrChanges >= 3) { - movingStack.setSubGrid(iteration, im_tmp); - iteration++; - } - - // Calculate the cost function - double cost = calculateMutualInformation(reference, im_tmp); - System.arraycopy(x, 0, saveParameters, 0, x.length); - - return cost; - } - - @Override - public void optimizerCallbackFunction(int currIterationNumber, double[] x, double currFctVal, - double[] gradientAtX) { - // Visualization of cost function value over time - if (this.resultVisualizer == null) - resultVisualizer = new TreeMap(); - resultVisualizer.put(currIterationNumber, currFctVal); - if (resultVisualizerPlot != null) - resultVisualizerPlot.close(); - - Grid1D out = new Grid1D(resultVisualizer.size()); - Iterator> it = resultVisualizer.entrySet().iterator(); - while (it.hasNext()) { - Entry e = it.next(); - out.setAtIndex(e.getKey(), e.getValue().floatValue()); - } - resultVisualizerPlot = VisualizationUtil.createPlot(out.getBuffer()).show(); - } - } - - /** - * Method to calculate the Mutual Information - * @param ref reference image - * @param mov moving image - * @return negative mutual information - */ - private double calculateMutualInformation(Grid2D ref, Grid2D mov){ - - int histSize = 256; - - // Step 1: Calculate joint histogram - SimpleMatrix jointHistogram = calculateJointHistogram(ref, mov); - - // Step 2: Get histogram for a single image from the joint histogram - // a) for the first image - SimpleVector histo1 = new SimpleVector(histSize); - histo1 = getHistogramFromJointHistogram(jointHistogram); - - // b) for the second image - SimpleVector histo2 = new SimpleVector(histSize); - SimpleMatrix jh_t = jointHistogram.transposed(); - histo2 = getHistogramFromJointHistogram(jh_t); - - // Step 3: Calculate the marginal entropies and the joint entropy - double entropy_jointHisto = 0; - double entropy_histo1 = 0; - double entropy_histo2 = 0; - - for(int i = 0; i < histSize; i++) - { - if(histo1.getElement(i) != 0) - { - // TODO: calculate entropy for histogram 1 - } - - if(histo2.getElement(i) != 0) - { - // TODO: calculate entropy for histogram 2 - } - } - - for (int i = 0; i < histSize; i++) - { - for (int j = 0; j < histSize; j++) - { - if(jointHistogram.getElement(i, j) != 0) - { - // TODO: calculate entropy of the joint histogram - } - } - } - - // make sure to consider the - in from of the sum (Entropy formula) - // TODO - // TODO - // TODO - - // Step 4: Calculate the mutual information - // Note: The mutual information is high for a good match - // but we require a minimization problem --> the result is inverted to fit the optimizer - double mutual_information = 0; - // TODO: calculate the mutual information - - return mutual_information * 1000; - } - - /** - * Method to calculate the joint histogram of two images - * @param im1 image1 - * @param im2 image2 - * @return a SimpleMatrix corresponding to the joint histogram - */ - private SimpleMatrix calculateJointHistogram(Grid2D im1, Grid2D im2){ - - // Calculate joint histogram - int histSize = 256; - SimpleMatrix jH = new SimpleMatrix(histSize, histSize); - - for (int i = 0; i < histSize; i++) { - for (int j = 0; j < histSize; j++) { - // TODO - } - } - - // Divide by the number of elements in order to get probabilities - for (int i = 0; i < histSize; i++) { - for (int j = 0; j < histSize; j++) { - // TODO - } - } - - return jH; - } - - /** - * Method to calculate a histogram from a joint histogram - * @param jH The joint histogram - * @return a SimpleVector corresponding to the marginal histogram - */ - private SimpleVector getHistogramFromJointHistogram(SimpleMatrix jH){ - - // Calculate histogram from joint histogram - int histSize = 256; - SimpleVector hist = new SimpleVector(histSize); - hist.zeros(); - - for(int i = 0; i < histSize; i++) - { - for(int j = 0; j < histSize; j++) - { - // TODO: sum up over the columns - } - } - - return hist; - } - - private double[] performOptimization(){ - - FunctionOptimizer fo = new FunctionOptimizer(); - - fo.setDimension(3); - fo.setNdigit(6); - fo.setItnlim(50); - fo.setMsg(16); - fo.setInitialX(new double[]{0,0,0}); - fo.setMaxima(new double[]{50,50,50}); - fo.setMinima(new double[]{-50,-50,-50}); - fo.setOptimizationMode(OptimizationMode.Function); - - CostFunction cF = new CostFunction(); - - movingStack = new Grid3D(reference.getWidth(), reference.getHeight(), 1000, false); - iteration = 0; - saveParameters = new double[]{Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY}; - - // Optimization visualized - ArrayList visFcts = new ArrayList(); - visFcts.add(cF); - fo.setCallbackFunctions(visFcts); - - double result[] = fo.optimizeFunction(cF); - - return result; - } - - public static void main(String[] args){ - - ImageJ ij = new ImageJ(); - - // Load images - // TODO Adjust paths - String filename1 = "C:/StanfordRepo/CONRAD/src/edu/stanford/rsl/tutorial/dmip/T1.png"; - String filename2 = "C:/StanfordRepo/CONRAD/src/edu/stanford/rsl/tutorial/dmip/Proton.png"; - - Grid2D image1 = ImageUtil.wrapImagePlus(IJ.openImage(filename1)).getSubGrid(0); - Grid2D image2 = ImageUtil.wrapImagePlus(IJ.openImage(filename2)).getSubGrid(0); - - image1.show("Input Image 1"); - image2.show("Input Image 2"); - - // Set the Origin of the image in its center - // The default origin of an image is in its top left corner - // Default Origin: [0.0, 0.0] - int w = image1.getWidth(); - int h = image1.getHeight(); - - image1.setOrigin(-(w-1) / 2 , -(h-1)/2); - image2.setOrigin(-(w-1) / 2 , -(h-1)/2); - image1.setSpacing(1); - image2.setSpacing(1); - - // Blurred Images for the registration to avoid local minima during optimization - Grid2D image1_blurred = new Grid2D(image1); - Grid2D image2_blurred = new Grid2D(image2); - - IJ.run(ImageUtil.wrapGrid(image1_blurred,""),"Gaussian Blur...", "sigma=4"); - IJ.run(ImageUtil.wrapGrid(image2_blurred,""),"Gaussian Blur...", "sigma=4"); - - Registration2 reg2 = new Registration2(); - reg2.reference = image1_blurred; - reg2.image = image2_blurred; - - // Perform Optimization - double res[] = reg2.performOptimization(); - - // Stack for visualization purposes only - Grid3D optimizationStepsGrid = new Grid3D(reg2.reference.getWidth(), reg2.reference.getHeight(), reg2.iteration, false); - for (int i = 0; i < optimizationStepsGrid.getSize()[2]; i++) { - optimizationStepsGrid.setSubGrid(i, reg2.movingStack.getSubGrid(i)); - } - optimizationStepsGrid.show("Optimization Steps"); - - // Transform image back - SimpleMatrix r = new SimpleMatrix(2,2); - Grid2D registeredImage = new Grid2D(image2); - double phi = (2 * Math.PI) / 360 * res[0]; - r.setElementValue(0, 0, Math.cos(phi)); - r.setElementValue(0, 1, -Math.sin(phi)); - r.setElementValue(1, 0, Math.sin(phi)); - r.setElementValue(1, 1, Math.cos(phi)); - - SimpleVector t2 = new SimpleVector(res[1], res[2]); - AffineTransform affine2 = new AffineTransform(r, t2); - registeredImage.applyTransform(affine2); - registeredImage.show("Registered Image"); - } -} \ No newline at end of file diff --git a/src/edu/stanford/rsl/tutorial/dmip/Registration3.java b/src/edu/stanford/rsl/tutorial/dmip/Registration3.java deleted file mode 100644 index 1edda7f4..00000000 --- a/src/edu/stanford/rsl/tutorial/dmip/Registration3.java +++ /dev/null @@ -1,254 +0,0 @@ -package edu.stanford.rsl.tutorial.dmip; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.TreeMap; -import java.util.Map.Entry; - -import edu.stanford.rsl.conrad.data.numeric.Grid1D; -import edu.stanford.rsl.conrad.data.numeric.Grid2D; -import edu.stanford.rsl.conrad.data.numeric.Grid3D; -import edu.stanford.rsl.conrad.geometry.transforms.AffineTransform; -import edu.stanford.rsl.conrad.numerics.SimpleMatrix; -import edu.stanford.rsl.conrad.numerics.SimpleVector; -import edu.stanford.rsl.conrad.utils.ImageUtil; -import edu.stanford.rsl.conrad.utils.VisualizationUtil; -import edu.stanford.rsl.jpop.FunctionOptimizer; -import edu.stanford.rsl.jpop.FunctionOptimizer.OptimizationMode; -import edu.stanford.rsl.jpop.OptimizableFunction; -import edu.stanford.rsl.jpop.OptimizationOutputFunction; -import edu.stanford.rsl.tutorial.phantoms.SheppLogan; -import ij.IJ; -import ij.ImageJ; -import ij.gui.PlotWindow; - -/** - * Exercise 7 of Diagnostic Medical Image Processing (DMIP) - * Solve the Registration Problem using Sum of Squared Difference - * @author Bastian Bier - * - */ -public class Registration3 { - - public Grid2D reference = null; - public Grid2D image = null; - - public Grid3D movingStack = null; - - public int iteration = 0; - double[] saveParameters; - - public class CostFunction implements OptimizableFunction, OptimizationOutputFunction{ - - - private TreeMap resultVisualizer; - - private PlotWindow resultVisualizerPlot; - - @Override - public void setNumberOfProcessingBlocks(int number) { - } - - @Override - public int getNumberOfProcessingBlocks() { - return 1; - } - - /* - * This function gets a parameter vector and returns the result of the cost function - */ - @Override - public double evaluate(double[] x, int block) { - int nrChanges = 0; - for (int i = 0; i < x.length; i++) { - if(saveParameters[i]!=x[i]){ - nrChanges++; - } - } - - // Define Rotation - SimpleMatrix r = new SimpleMatrix(2,2); - double phi2 = x[0] * (2*Math.PI)/360; - r.setElementValue(0, 0, Math.cos(phi2)); - r.setElementValue(0, 1, - Math.sin(phi2)); - r.setElementValue(1, 0, Math.sin(phi2)); - r.setElementValue(1, 1, Math.cos(phi2)); - - // Define translation - double t_x = x[1]; - double t_y = x[2]; - - Grid2D im_tmp = new Grid2D(image); - - // Perform rotation/translation - SimpleVector t = new SimpleVector(t_x,t_y); - AffineTransform affine = new AffineTransform(r, t); - im_tmp.applyTransform(affine); - - if(nrChanges>=3){ - movingStack.setSubGrid(iteration, im_tmp); - iteration++; - } - - // Calculate the cost function - double cost = SumOfSquaredDifferences(reference, im_tmp); - System.arraycopy(x, 0, saveParameters, 0, x.length); - - return cost; - } - - @Override - public void optimizerCallbackFunction(int currIterationNumber, double[] x, double currFctVal, - double[] gradientAtX) { - // Visualization of cost function value over time - if (this.resultVisualizer == null) - resultVisualizer = new TreeMap(); - resultVisualizer.put(currIterationNumber, currFctVal); - if (resultVisualizerPlot != null) - resultVisualizerPlot.close(); - - Grid1D out = new Grid1D(resultVisualizer.size()); - Iterator> it = resultVisualizer.entrySet().iterator(); - while (it.hasNext()) { - Entry e = it.next(); - out.setAtIndex(e.getKey(), e.getValue().floatValue()); - } - resultVisualizerPlot = VisualizationUtil.createPlot(out.getBuffer()).show(); - } - - } - - private double SumOfSquaredDifferences(Grid2D ref, Grid2D imageMoving){ - - double sum = 0.0; - - for(int i = 0; i < ref.getWidth(); i++) - { - for(int j = 0; j < ref.getHeight(); j++) - { - // TODO: calculate SSD - } - } - - return sum/ref.getNumberOfElements(); - } - - public double[] performOptimization(){ - - // Initialize optimization class - FunctionOptimizer fo = new FunctionOptimizer(); - fo.setDimension(3); - fo.setItnlim(50); - movingStack = new Grid3D(reference.getWidth(), reference.getHeight(), 1000, false); - iteration = 0; - fo.setOptimizationMode(OptimizationMode.Function); - fo.setNdigit(8); - fo.setMsg(16); - fo.setInitialX(new double[]{0,0,0}); - fo.setMaxima(new double[]{50,50,50}); - fo.setMinima(new double[]{-50,-50,-50}); - - // Initialize the Costfunction of the optimization - CostFunction cf = new CostFunction(); - saveParameters = new double[]{Double.POSITIVE_INFINITY,Double.POSITIVE_INFINITY,Double.POSITIVE_INFINITY}; - - // Optimization visualized - ArrayList visFcts = new ArrayList(); - visFcts.add(cf); - fo.setCallbackFunctions(visFcts); - - // Perform the optimization with the given cost function - double[] result = fo.optimizeFunction(cf); - - return result; - } - - - - - public static void main(String[] args){ - - ImageJ ij = new ImageJ(); - - /////////////////////////////////////////////////////// - // Part 1: Apply a transformation on a phantom image // - /////////////////////////////////////////////////////// - - // Create Phantom - Grid2D phantom = new SheppLogan(256); - - // Set the Origin of the image in its center - // The default origin of an image is in its top left corner - // Default Origin: [0.0, 0.0] - int w = phantom.getWidth(); - int h = phantom.getHeight(); - phantom.setOrigin(-(w-1) / 2 , -(h-1)/2); - - Grid2D phantom_blurred = new Grid2D(phantom); - IJ.run(ImageUtil.wrapGrid(phantom_blurred,""),"Gaussian Blur...", "sigma=3"); - phantom.show("Phantom"); - - // Rotate the phantom by 45° and translate it with t = [20, 1] - - // Define Rotation and translation - SimpleMatrix r = new SimpleMatrix(2,2); - - // TODO: set phi - double phi = 0; - - // TODO: fill the rotation matrix - // TODO - // TODO - // TODO - // TODO - - // TODO: define translation - SimpleVector t = new SimpleVector(0,0); - - // Initialize transformed phantom - Grid2D transformedPhantom = new Grid2D(phantom); - Grid2D transformedPhantom_blurred = new Grid2D(phantom_blurred); - - // Create the affine transformation - AffineTransform affine = new AffineTransform(r, t); - - // Apply the transformation - transformedPhantom.applyTransform(affine); - transformedPhantom_blurred.applyTransform(affine); - - transformedPhantom.show("Transformed Phantom"); - - - ///////////////////////////////////// - // Part 2: Find the transformation // - ///////////////////////////////////// - - // Registration of the transformed image to the initial phantom - Registration3 reg3 = new Registration3(); - reg3.reference = phantom_blurred; - reg3.image = transformedPhantom_blurred; - - // Optimization - double[] res = reg3.performOptimization(); - - // Stack for visualization purposes only - Grid3D optimizationStepsGrid = new Grid3D(reg3.reference.getWidth(),reg3.reference.getHeight(),reg3.iteration,false); - for (int i = 0; i < optimizationStepsGrid.getSize()[2]; i++) { - optimizationStepsGrid.setSubGrid(i, reg3.movingStack.getSubGrid(i)); - } - optimizationStepsGrid.show(); - - // Transform image back - Grid2D backtransformedImage = new Grid2D(transformedPhantom); - phi = (2*Math.PI)/360 * res[0]; - r.setElementValue(0, 0, Math.cos(phi)); - r.setElementValue(0, 1, - Math.sin(phi)); - r.setElementValue(1, 0, Math.sin(phi)); - r.setElementValue(1, 1, Math.cos(phi)); - - SimpleVector t2 = new SimpleVector(res[1],res[2]); - AffineTransform affine2 = new AffineTransform(r, t2); - backtransformedImage.applyTransform(affine2); - backtransformedImage.show(); - } -} diff --git a/src/edu/stanford/rsl/tutorial/dmip/SVDandFT.java b/src/edu/stanford/rsl/tutorial/dmip/SVDandFT.java deleted file mode 100644 index 49dedd8c..00000000 --- a/src/edu/stanford/rsl/tutorial/dmip/SVDandFT.java +++ /dev/null @@ -1,431 +0,0 @@ -package edu.stanford.rsl.tutorial.dmip; - -import edu.stanford.rsl.conrad.data.numeric.Grid2D; -import edu.stanford.rsl.conrad.data.numeric.Grid2DComplex; -import edu.stanford.rsl.conrad.data.numeric.Grid3D; -import edu.stanford.rsl.conrad.fitting.LinearFunction; -import edu.stanford.rsl.conrad.numerics.DecompositionSVD; -import edu.stanford.rsl.conrad.numerics.SimpleMatrix; -import edu.stanford.rsl.conrad.numerics.SimpleMatrix.InversionType; -import edu.stanford.rsl.conrad.numerics.SimpleMatrix.MatrixNormType; -import edu.stanford.rsl.conrad.numerics.SimpleOperators; -import edu.stanford.rsl.conrad.numerics.SimpleVector; -import edu.stanford.rsl.conrad.utils.ImageUtil; -import edu.stanford.rsl.conrad.utils.VisualizationUtil; -import ij.IJ; -import ij.ImageJ; - -/** - * - * Exercise 2 of Diagnostic Medical Image Processing (DMIP) - * @author Marco Boegel - * - */ -public class SVDandFT { - /* - public static void invertSVD(SimpleMatrix A) - { - - - System.out.println("A = " + A.toString()); - - //Compute the inverse of A without using inverse() - //TODO - - //Check output: re-compute A = U * S * V^T - SimpleMatrix temp = SimpleOperators.multiplyMatrixProd(svd.getU(), svd.getS()); - SimpleMatrix A2 = SimpleOperators.multiplyMatrixProd(temp, svd.getV().transposed()); - System.out.println("U * S * V^T: " + A2.toString()); - - //Moore-Penrose Pseudoinverse defined as V * Sinv * U^T - //Compute the inverse of the singular matrix S - SimpleMatrix Sinv = new SimpleMatrix( svd.getS().getRows(), svd.getS().getCols()); - Sinv.zeros(); - - int size = Math.min(Sinv.getCols(), Sinv.getRows()); - SimpleVector SinvDiag = new SimpleVector( size); - - //TODO - //TODO - //TODO - - Sinv.setDiagValue(SinvDiag); - - //Compare our implementation to svd.getreciprocalS() - System.out.println("Sinv = " + Sinv.toString()); - System.out.println("Srec = " +svd.getreciprocalS().toString()); - - - SimpleMatrix tempInv = SimpleOperators.multiplyMatrixProd(svd.getV(), svd.getreciprocalS()); - SimpleMatrix Ainv = SimpleOperators.multiplyMatrixProd(tempInv, svd.getU().transposed()); - System.out.println("Ainv = " + Ainv.toString()); - System.out.println("A.inverse() = " + A.inverse(InversionType.INVERT_SVD)); - - //Condition number - //TODO - System.out.println("Cond(A) = " + cond); - - //introduce a rank deficiency - double eps = 10e-3; - SimpleMatrix Slowrank = new SimpleMatrix(svd.getS()); - int sInd = Math.min(svd.getS().getRows(), svd.getS().getCols()); - for(int i = 0; i < sInd; i++) - { - double val = svd.getS().getElement(i, i); - //TODO - //TODO - //TODO - } - - SimpleMatrix templowrank = SimpleOperators.multiplyMatrixProd(svd.getU(), Slowrank); - SimpleMatrix Alowrank = SimpleOperators.multiplyMatrixProd(templowrank, svd.getV().transposed()); - System.out.println("A rank deficient = " + Alowrank.toString()); - - - - //Show that a change in a vector b of only 0.1% can lead to 240% change in the result of A*x=b - //Consider A as already defined - //And vector b - SimpleVector b = new SimpleVector(1.001, 0.999, 1.001); - - //solve for x - SimpleVector x = SimpleOperators.multiply(Ainv, b); - System.out.println(x.toString()); - - //if we set vector b to the vector consisting of 1's, we imply a 0.1% change - SimpleVector br = new SimpleVector(1,1,1); - - - SimpleVector xr = SimpleOperators.multiply(Ainv, br); - System.out.println(xr.toString()); - //We want only the difference caused by the change - SimpleVector xn = SimpleOperators.subtract(xr, x); - - //Alternatively: - //SimpleVector bn = SimpleOperators.subtract(br, b); - //SimpleVector xn = SimpleOperators.multiply(Ainv, bn); - - System.out.println("Modification of x " + SimpleOperators.divideElementWise(xn, x).toString()); - } - - public static void optimizationProblem1(SimpleMatrix A, int rankDeficiency) - { - System.out.println("Optimization Problem 1"); - //%%%%%%%%%%%%%%%%%%%%%%%%%%%% - // Optimization problem I - //%%%%%%%%%%%%%%%%%%%%%%%%%%% - - // Let us consider the following problem that appears in many image - // processing and computer vision problems: - // We computed a matrix A out of sensor data like an image. By theory - // the matrix A must have the singular values s1, s2, . . . , sp, where - // p = min(m, n). Of course, in practice A does not fulfill this constraint. - // Problem: What is the matrix A0 that is closest to A (according to the - // Frobenius norm) and has the required singular values? - - - // Let us assume that by theoretical arguments the matrix A is required - // to have a rank deficiency of one, and the two non-zero singular values - // are identical. The matrix A0 that is closest to A according to the - // Frobenius norm and fulfills the above requirements is: - - // Build mean of first two singular values to make them identical - // Set third singular value to zero - - DecompositionSVD svd = new DecompositionSVD(A); - int rank = svd.rank(); - - int newRank = rank - rankDeficiency; - - - - //Compute mean of remaining singular values - double mean = 0; - //TODO - //TODO - //TODO - - //Create new Singular matrix - SimpleMatrix Slowrank = new SimpleMatrix(svd.getS().getRows(), svd.getS().getCols()); - Slowrank.zeros(); - //Fill in remaining singular values with the mean. - //TODO - //TODO - //TODO - - //compute A0 - SimpleMatrix temp = SimpleOperators.multiplyMatrixProd(svd.getU(), Slowrank); - SimpleMatrix A0 = SimpleOperators.multiplyMatrixProd(temp, svd.getV().transposed()); - - System.out.println("A0 = " + A0.toString()); - - double normA = A.norm(MatrixNormType.MAT_NORM_FROBENIUS); - double normA0 = A0.norm(MatrixNormType.MAT_NORM_FROBENIUS); - - System.out.println("||A||_F = " + normA); - System.out.println("||A0||_F = " + normA0); - - - } - - public static void optimizationProblem4(double[] xCoords, double[] yCoords) - { - System.out.println("Optimization Problem 4"); - //%%%%%%%%%%%%%%%%%%%%%%%%%%% - //Optimization problem IV - //%%%%%%%%%%%%%%%%%%%%%%%%%%% - - // The Moore-Penrose pseudo-inverse is required to find the - // solution to the following optimization problem: - // Compute the regression line through the following 2-D points: - // We have sample points (x_i,y_i) and want to fit a line model - // y = mx + t (linear approximation) through the points - // y = A*b - // Note: y = m*x +t*1 Thus: A contains (x_i 1) in each row, and y contains the y_i coordinates - // We need to solve for b = (m t) - - SimpleMatrix A = new SimpleMatrix(xCoords.length, 2); - SimpleVector aCol = new SimpleVector(xCoords.length); - SimpleVector y = new SimpleVector(xCoords.length); - for(int i = 0; i < xCoords.length; i++) - { - aCol.setElementValue(i, xCoords[i]); - y.setElementValue(i, yCoords[i]); - } - A.setColValue(0, aCol); - SimpleVector aColOnes = new SimpleVector(xCoords.length); - aColOnes.ones(); - A.setColValue(1, aColOnes); - - - - // Note: We need to use SVD matrix inversion because the matrix is not square - // more samples (7) than unknowns (2) -> overdetermined system -> least-square - // solution. - - //get solution for b - //TODO - //TODO - - - LinearFunction lFunc = new LinearFunction(); - lFunc.setM(b.getElement(0)); - lFunc.setT(b.getElement(1)); - VisualizationUtil.createScatterPlot(xCoords, yCoords, lFunc).show(); - - } - - public static void optimizationProblem2(SimpleMatrix b) - { - System.out.println("Optimization Problem 2"); - // Estimate the matrix A in R^{2,2} such that for the following vectors - // the optimization problem gets solved: - // sum_{i=1}^{4} b'_{i} A b_{i} and ||A||_{F} = 1 - // The objective function is linear in the components of A, thus the whole - // sum can be rewritten in matrix notation: - // Ma = 0 - // where the measurement matrix M is built from single elements of the - // sum. - // Given the four points we get four equations and therefore four rows in M: - - SimpleMatrix M = new SimpleMatrix( b.getCols(), 4); - - for(int i = 0; i < b.getCols(); i++) - { - // i-th column of b contains a vector. First entry of M is x^2 - //Setup measurement matrix M - //TODO - //TODO - //TODO - //TODO - } - - // TASK: estimate the matrix A - // HINT: Nullspace - DecompositionSVD svd = new DecompositionSVD(M); - //TODO - //TODO - - //We need to reshape the vector back to the desired 2x2 matrix form - SimpleMatrix A = new SimpleMatrix(2,2); - //TODO - //TODO - - //check if Frobenius norm is 1.0 - double normF = A.norm(MatrixNormType.MAT_NORM_FROBENIUS); - System.out.println("||A||_F = " + normF); - - //check solution - - SimpleVector temp = SimpleOperators.multiply(M, a); - double result = SimpleOperators.multiplyInnerProd(a, temp); - System.out.println("Minimized error: " + result); - } - - public static void optimizationProblem3(Grid2D image, int rank) - { - //% - //%%%%%%%%%%%%%%%%%%%%%%%%%%% - // Optimization problem III - //%%%%%%%%%%%%%%%%%%%%%%%%%%% - - // The SVD can be used to compute the image matrix of rank k that best - // approximates an image. Figure 1 shows an example of an image I - // and its rank-1-approximation I0 = u_{1} * s_{1} * v'_{1}. - - //In order to apply the svd, we first need to transfer our Grid2D image to a matrix - SimpleMatrix I = new SimpleMatrix(image.getHeight(), image.getWidth()); - - //NOTE: indices of matrix and image are reversed - for(int i = 0; i < image.getHeight(); i++) - { - for(int j = 0; j < image.getWidth(); j++) - { - double val = image.getAtIndex(j, i); - I.setElementValue(i, j, val); - } - } - - DecompositionSVD svd = new DecompositionSVD(I); - - //output images - Grid3D imageRanks = new Grid3D(image.getWidth(), image.getHeight(), rank); - - //Create Rank k approximations - for(int k = 0; k < rank; k++) - { - //TODO - //TODO - - - //Transfer back to grid - Grid2D imageRank = new Grid2D(image.getWidth(),image.getHeight()); - for(int i = 0; i < image.getHeight(); i++) - { - for(int j = 0; j < image.getWidth(); j++) - { - if(k == 0) - { - imageRank.setAtIndex(j, i, (float) Iapprox.getElement(i, j)); - - } - else - { - //TODO - } - - - } - } - imageRanks.setSubGrid(k, imageRank); - } - - imageRanks.show(); - - - //Direct estimation of rank K - //TODO - //TODO - //Transfer back to grid - Grid2D imageRankK = new Grid2D(image.getWidth(), image.getHeight()); - for(int i = 0; i < image.getHeight(); i++) - { - for(int j = 0; j < image.getWidth(); j++) - { - imageRankK.setAtIndex(j, i, (float) IapproxK.getElement(i, j)); - } - } - imageRankK.show(); - - - } - - public static void fourierExercise(Grid2D image) - { - //TODO complex image - // Important: Grid2DComplex enlarges the original image to the next power of 2 - imageC.show(); - - - //Apply 2-D discrete fourier transform - //Puts the DC component of the signal in the upper left corner of the FFT - //TODO - imageC.show("Shepp-Logan FFT"); - - //TODO - imageC.show("Shepp-Logan FFTShift"); - - //Visualize log transformed FFT log(1+|FFTshift(image)|) - Grid2D logFFT = new Grid2D(imageC.getMagnSubGrid(0, 0, imageC.getWidth(), imageC.getHeight())); - logFFT.getGridOperator().addBy(logFFT, 1.f); - logFFT.getGridOperator().log(logFFT); - logFFT.show("Shepp-Logan FFTShift log"); - - // Important: Grid2DComplex enlarges the original image to the next power of 2 - // When transforming back, make sure to prune the image size to your original image - //TODO inverse FFT - //TODO prune - imageTransf.show(); - } - - public static void main(String[] args) { - - ImageJ ij = new ImageJ(); - //Create matrix A - // 11 10 14 - // 12 11 -13 - // 14 13 -66 - SimpleMatrix A = new SimpleMatrix(3,3); - A.setRowValue(0, new SimpleVector(11, 10, 14)); - A.setRowValue(1, new SimpleVector(12, 11, -13)); - A.setRowValue(2, new SimpleVector(14, 13, -66)); - - invertSVD(A); - optimizationProblem1(A, 1); - - //Data for problem 4 from lecture slides - double[] xCoords = new double[]{3.f, 2.f, 1.f, 0.f, -1.f, -1.f, -2.f}; - double[] yCoords = new double[]{2.f, 1.f, 2.f, 0.f, 1.f, -1.f, -1.f}; - - optimizationProblem4(xCoords, yCoords); - - - - // Data for problem 2 from lecture slides - SimpleMatrix vectors = new SimpleMatrix(2,4); - vectors.setColValue(0, new SimpleVector(1.f, 1.f)); - vectors.setColValue(1, new SimpleVector(-1.f, 2.f)); - vectors.setColValue(2, new SimpleVector(1.f, -3.f)); - vectors.setColValue(3, new SimpleVector(-1.f, -4.f)); - - optimizationProblem2(vectors); - - //Load an image from file - String filename = "D:/04_lectures/DMIP/exercises/2014/1/yu_fill.jpg"; - Grid2D image = ImageUtil.wrapImagePlus(IJ.openImage(filename)).getSubGrid(0); - image.show(); - - int rank = 100; - optimizationProblem3(image, rank); - - - //Load Data for Fourier Transform exercise - //1. Start the ReconstructionPipelineFrame (src/apps/gui/) - //2. In the Pipeline window, go to edit configuration and press "center volume" and save - //3. In the ImageJ window, navigate to Plugins->CONRAD->Create Numerical Phantom - //4. Choose Metric Volume Phantom - //5. Choose Shepp Logan Phantom - //6. Save the resulting volume. In the ImageJ window, File-Save As->Tiff... - - String filenameShepp = "D:/04_lectures/DMIP/exercises/2014/1/shepplogan.tif"; - Grid3D sheppLoganVolume = ImageUtil.wrapImagePlus(IJ.openImage(filenameShepp)); - //To work with a 2-D image, select slice 160 - Grid2D sheppLoganImage = sheppLoganVolume.getSubGrid(160); - sheppLoganImage.show(); - fourierExercise(sheppLoganImage); - - - - } -*/ -} diff --git a/src/edu/stanford/rsl/tutorial/dmip/Sinogram0.tif b/src/edu/stanford/rsl/tutorial/dmip/Sinogram0.tif deleted file mode 100644 index a67374ed9caba9bc4b80a7c36c90e6ec82ea15aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 107391 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 diff --git a/src/edu/stanford/rsl/tutorial/dmip/Sinogram1.tif b/src/edu/stanford/rsl/tutorial/dmip/Sinogram1.tif deleted file mode 100644 index 11f413c41e979a278c3f3a14213b0e9be7601471..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 107390 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

|Gqh{Nv&v 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 diff --git a/src/edu/stanford/rsl/tutorial/dmip/Sinogram2.tif b/src/edu/stanford/rsl/tutorial/dmip/Sinogram2.tif deleted file mode 100644 index 1aec6b53669ae9acd3f34104af89719e6e9e9d01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 107390 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 F|Jg7+iZB2G diff --git a/src/edu/stanford/rsl/tutorial/dmip/frame90.jpg b/src/edu/stanford/rsl/tutorial/dmip/frame90.jpg deleted file mode 100644 index 6f8a4bff6942af7d50be0c5cc9470aad4058f63f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21090 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 diff --git a/src/edu/stanford/rsl/tutorial/dmip/mask.bmp b/src/edu/stanford/rsl/tutorial/dmip/mask.bmp deleted file mode 100644 index dca842ef7be13065b3575e238106cf76bfaa9dba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14518 zcmeI01yEF77=|Ad6cGahTWl~f0Sgg3u&@=o6AKHm1-r!p0}DH`P*4Or!EWsC!ul5k zcEP=OcbV03{yBGMcfRv|=YH><=e+04-F0*dup{QOF$60`?*IDN>{$Wy+Ko8yk}$#s*tkTkP!YC||xj6)IGqV#SJ7 zs#J-}l`CU!Z%>sfRd8@{pla2sI668~ty(pzSFcWu8a1d{vnI7_)uMLo+SI92hq`s^ zQmesK2lamt-8Z@9`!-h0!)QHB78`Gpo6P%r$Y1*_Y&6+i%dGqG9Xwia}EnCv6 zRV!MzZcUpuZD`xJEiNuDv}@On_U+r#p+g5ccI-%}PMzr7xiek5bfIh4u5|0xjqcsM z)1yZZdiLx|uU@_A-Mcq^`t+f1-@f$g*N^`F`{U~B%76g_7&vesg9Z&^@ZiA=88QSn zH#de39m=p_!x%n%I3q@kVC2Y=xVyVEYSbt^JUkdZdNgCkjA889v5Xrxj`8EiGhxC6 zCQh8lq)C(T^z_8b%ZtgACo^Tr6sAs{%Cu?Im_B_vGiJ zoy)v=^O!$>J_{Bsz}wrKg$oz5Xwf1TFJ8=&B}-VkbSXYQKKT0jvTWHhmM>qi#8rH5|%er;z@b~v;{rdH6*sy_(8#l6P(|yWTz3kh!kNx}i6BroCfddCPc<>-W zK|uru2XpAqAr2otOh`xwM~)mJG&Gd3urQ7uJ<73T$2flcI44e=;N;1ZoH})i)2B~! z=FAz+o;}OCbLTjJ{yY~hTp&C=oQQ}BE?&IIrAwE%eEBk0u3X{j)vH{)c8%-TuXE$Z z4Q}4N$*o(rxPALJckbNb?%lgYMn-b)-aYQ$zt4jQ4|w?SA&(wC;_>6hJbChjr%#{q z?AbG(KYz}P7cY4E@+Gfcz2f!j*SvZ2hPQ9u^6uR`-oJm(hYuh4`0*p3K7Hcz=g)lk z@`b3VD87FE%C~Rd`2PJnKYsk+=g*%g_P#zY9s4NGB>h}E_7S>C#4b3?f)l=y#Uou5 zzLI96s0d%l;*l;2UrDnOzLI4lTNJ*M$D<=3$!2kVls{7AGHP$p`#C9e1!n~T;VZQ^ z(436htzsXkWuvlch$cYTGf6!L$av&QH9L%tHai5w$1CjydisL?M8r%R9i5NBz@*ox4VMI_c& z7Eg3h`DUOxHR--m_EQ_hizut{spzMP9>kVZ^AfSj`YQXWjp7?9tMMsCkaS(uF1p7; zSC*N|`pVAJSQMOP5ed$+c%+NMSJG@075(~3Rw_YJ=qA9S{UFBAI!xDbzGP<|`}~#l zjeb)|^uWI*64kXHCT^^HqtF%ShN>TQiRFByrq5sTv(OcOR^tJ!Qu^|9p?)_|KI(r{JZh*M8A0cbH0+=FH(7Z R?IWrFQhA{(MJ6T>{{hr9vMm4r diff --git a/src/edu/stanford/rsl/tutorial/dmip/testimg.bmp b/src/edu/stanford/rsl/tutorial/dmip/testimg.bmp deleted file mode 100644 index ee77aafad2b9480fbf704f72716d220976b172d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14518 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 diff --git a/src/edu/stanford/rsl/tutorial/dmip/undistorted.jpg b/src/edu/stanford/rsl/tutorial/dmip/undistorted.jpg deleted file mode 100644 index d4d20a86f559e43df2d57cff4f20c2dab842429a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14360 zcmbt)^;=YH)b<936hWj0974eY=^CU(X#`2>l5S99sG*NYi4xM?-8nFDV2;4hH6SoJ z4Bg$lyzlk>2j8=Q+539-wR1gdtvhaKZn3}v6$NDlfPjDiFu&V?+Z%vU-ox7Bv-Kx- zZ~M=7>^gSV?25|jnzwU+{QsWz|21yAfO}*F0B}M;@C3O17hnMZLZbh>BJlqPF$sv2 z3?L^UqPUw@esDKWLPAPHLO?)DNJ2ya5P<*!Vw%SSv~+SGEcQq^INgK4=a355AV-%7 z>4o0v?0=Fcd&uzQY1mKg&w?VBR{8ae??P&CX92Ri7X)Mg)RtE~j($3`R!TCy3ms)1 z*wM_Tk-0m?F(mpjocDEC`J|a=kyQUGow-dD+%(&LV<=o(ayp8i(tXJZS0%b4+RHJ{ z3VyP2WrRmeR|FPkx;a>biw>?UC9bBT$+`#wx}3)J{0oRHC)}S&4;)X~c-zbjpgBTs z(id)l)*qS8ILTdAcG}23y5@~V7iln>OgN3`2Z@Ak+r^$CN3@8WAq-Y`Y76mJfp*2! z!3j2gdmtYCT)hX&^ApV#Fp+)qwz0ic?>W{Z*WCpm5=>hu@6b$mzP==QUkV~1`*x^b zV`pVE%c&-&B<9G;oGDeo6z=&n`gH;1{IiCNu#-ifb=~oC`rnFMpdp9i7nb+wZrUZUk~G1M3ar{Qee`WXr80@*O- z!zaYU`h&Pv-ZLdeEmG85r1iML@pu2heFlASk9_7~KPDNd9b$SDFILo=Gfh}F5t~0W zy{rlWdriarjY+e5(XG)K8Z>KINVOR;w2jhGt=F+I5w9T*QR@TK|`tObrw){+)7Ws_W@xXdv zadoY!a@p<~`iYt$b$?8wyB0s88pV@|d$ZDqUQVt5K0X*>u&aS{Kea6W*%W=~G$vsY zXUuM~80oDvKzF#P@+<4PD;N^gu#;>tTzI}2`|sSM;OG-vtaw(6dSKE~?Z2ax?*ByV z9$hL%O7(xac}OLsbpNcT>Cq0ph1;etD){&$wY{`Jj896d8L9>w_1FY{Yn>eJ*ACOQ zT}rvKz8L0{JE=OzIA5yt6C3aOcQ*RM9qY7$aas-fC?y5oLaBd?rg86*{4~^e+9z~k zbp7Ka|L1tOH+&yo`V^ra!mHu@3WpkYCF^olg85;xRDMu8HYcjtv*ZIL;D;wT}rt!c3 zmofa%GA?@dL6Wq;z~?PxdVZ2}>a!N_&1l+`Z7$jsQWi`? z>!I0mKq2P>%QTDF85HO_ieM@tr*we(-sn@a>GWQ=*kK+RODMQ*6)2^pII1ens?u5>lR(FaRW@73 z50IOR6c%gI)Ecb=Pj-#?t9wKWjCJ4c9b4|Cwb7kYBAB!LNk}ZJTqHUgdGvRZD#f@@Ri=i zt<7^%`^0h#ocWWHHOtnc86j4<2V!1RAq;ld3!j3$nP7EKmEuAfPsf}$czNnW$>HxV zsQ4148QqH=J=ptOgjof#t6B6j^W6e-FIoA+Ys_9ggO9w1IRv$c;PCX; z?+qIjqS7VF-VM^Q*&ipdzV8*5C#{!>2bs1@k5WJFjFTFIedIhkUF}Y0u}Ty+^V0w1 z{e1WE$#X(}g^+Udv4V8o>nZFHfMGx4L-^KluX~5SYN@G$uw>LvmTxy3d#$TQ2dP6) zsfQ&v@9?STnkfMi$t&j_bJ@|9qa}#ugOKgG=kA>zN?^t)Gp$d<`xHEvO^ToMLs4V0 zOogS-BLxkz&iom+y0=e>Sm6)pmi^itd}B73xPO#|-X((*lM*i*4KuNp-|Ut@d)2fL zHrmVR7ZRmZ!nBFb=XY1?+23yv4tu||`qr8Q1XhhS^&mIX7ea@OZh?a^@@VK|-eA{A z)p;AAVR(-@LhxXv*f2kVTu@j+@*z2(=b8%qNEcHRtN&YJ1*)0ZJjp$N)mgd+pHLMt+lwh?V%TGsR^g}B zQvNNT^bWQ2`0>xQpS*nBh-(MIthMb2bwmHg6{rXI34e-$3+ZPx;ypw7`2!u$)*GaP zhV^)(i-hzfg~)U%)vDLm=h5B;)oA8s|CXh$X#}cFk{`kB{r00(1I3HsYmML_mg-wT zth@Mc)_)IPjSeMdj{a&R=H+`&T=0hLE|RwoQDlq1Ice=OL546wj2W>H2e3+7)l7JY?gNI;m_u?ma#5*P5vW_}{GwWKyC0me+dho9|`E9%O1XpCXa>BN9w#Q%vd6ybwZt#JP-=BoW8*j{rB>mBz3KQ|^TjJsF$)%yrxv>z*gl>?Sa$q zb(1-<=p13wEPKAI7MJz@$ys@20)l*Bq-aiR4V8}sH{0gz6R@6f?F*y6B{ zy?VH075&zdjtFingWm7sQ=^7|#R2cp{7MKk1 zf11gnQ~WsIPBi!im+zylKOEv|zEX-eAjQwTKhk)vUz$=*a0}3~-QW9DX2?`AOQSk# z;@UsfWwQ<^y+1;XMEkO|!QUnJq=6k{@Pn_QU--~(w*q_!d9oaisv{QRXVTut%caX`G9r3@V(C$7!NAK5P&Z4Fkb^Uh`8rqMUArnW zcWi%4z1;`*s*5O7u(Z;XO?Z5{PnSOPQBGnNEGhbkE0-6zQlCpc(p{?_BMEa>^zP5v zW-3vJJdiCN(PUZ=Yf^VTR0bh)7&S>AW%UoUZ0L^X*^+`Pq{ob|S8S<7pY9;-X~0h| zZUI)8=#1a21g<*sa#<4(f~EK!qOakN{`%gW)xxgzf7zpo0Gn!E$K&MEh1AYBM}G(~ zn?i>ai5!Xgk>|Q%bB^al2mB~fd~PzNYXf6a>kCsq<$Zw_oq5&hsbWg4-*K6=#skd& zWJY+t{KA$&(xr%B!e}N#4{aIuv=p6aF<)?dFFk8I(Jmf*WyU|1~tF|SM>vzMP3BB z!3-(xXE=JnD)0S0G6yl6|EySS3y2TbFf{%`U01rc6Qu-l)~BZCElaSznFC`9CwQSi zP@6Hd#8eQL)ge(MP^^*igy>2aaSPmYQI99@r!l}9Ix_CB6-ZMn1V>e!|+wVo(9CT*ckHb02enu-}!B& zK-pijixeoh5ic_?IcO4ufk6-1zY(1HI=g$B`A^?tL6H#T(*yL@X0Yb$h#KR6BaK3p?+%lVY(Uz+>&W zZi;S)hCop{#yLuudGd!~?_r^YrkQV-p2A!(&u10^X*-8Vjs$xe(4_bVdT)N97yPoM zm)A0Vc<-RoXHTATH1d(A1P<4R>VL8ShTwIFRBh;m^+$0^S}^cNK$gI|wb!rzBVRAk z^`um?jnI1Z!`N*&&5+>0A3cA8jOp{IA28f1g$qS&?fS1V-805%dHV|+D9n({-hpR) zxD>z6LjmI|o6~*2^14%~h#Hq0sp-HyD1HN*V1Odc)s=MFyMqzxY7BYpCTPFA9Fji6 z0E)H^o!XtHdbG(0YyYtPtN+2b|Avd+>+LJR6#$DbfKP|kkN_5oCJZz2IdNOKGdj}QbFT9@T1Y{Xm>BIb zu^>V1>&sSh1XBeU_TBm-p+=3PVeR((humLZ49R3-xA00;>e>u&_shxg2pt5OIYay{ z&|9_&VJ~u1h_LI=jmtuK=LL&)vB~c+99u@vSJHKm`WV*?Q$0|^rWZ0C5_`tITu4%g zfw0+?>v>fTbek{=C~(IwGOOPReCvp%1~3{td-6xV*m6b?L8jU6aG}cvh_zx784prN})!Cgk(X&F2-Y(HS8H zee+Hwg##d1kVz`Hw&mV=|Ln!}zy1~u2W``I{OH%Uj?+ha?xuP%Ks0pD4G8+T;ZM#e zGszeM-?ryhrmm_vE;qGK9*;1sDipfP7uR?@*Px=LJGD&}%G3cJfP7)DIe)St( zt678I0L@cmK0L@5cG@G<`XS1vyH**Ll>JgnlH7^Zte(7K#@Ey01N^ zt^J!2yitmzR@3Dkqc9w9qpUfH!oj>{{!??md%Bh^J6KaeXgjP`jx<`d7`1HR;%vAC zD~In#+ydDfJvD;|P3-#-IWlsx4tRvbd=Q9VDU2%OHi1#^3nAvoRhd+H{|Dk4WmN(OHxR*7anAc6#EUO8#awX2JOVeFv@EF; z*+rPvrRfC+bsCJ3%C96dQ=1yE?TxxB;YMlqHydOrNS|E=Lgy&A2Ha%OHea0hVw56r zO~nKi{ubc*XzTqA{+v4`xv0#vTxxa6(hzhaNC6=@Uv#*djMn~|QApNBv^#Jm^)m+4 zH|Zq5&3bYadzMGQt{CT4uE;8w)v-20CM@Dcy0aV5&O0wM*FnqtJW%A(*)7m~@wDu! zZE@|iDE)08pT?S$Xm1!6UFH5jkX6qGD;}wTcDr2J{X`iB3p5U;!jXP zpjb7$z`@bM+AW}A@*mbyOLqrzXqnL&!WZpnRLo|Fiq85yuYVVQpf9(8nO$6Zi)++_ zb7!)8TpTqoV-@9-7)lRwN}AN>6^G5;mZnGXzFl6W_ih1R*0iNbB?Lc5=n)sj_-wY4 z76yJH;`S7-*sg?kCF28^`ea|E0QL8F4^HLj*eUk}3x*|rJYUBNH}h@Y+{sBpu4LH(j9LLcdDS#AZvp14#YgmQ-NnRDh6PUs(gKhx1o6*6S<= zTo$4IHGO)h$leVT=tK65|lW2e>M{Z z-|T4A^$CW6iSwZ{rceKNoL!hF+#yE^#kt|AQ;$fAo)8iK!k1mAgRO5~NNRoNdDC-^ zz*~*^%vlOk@*n9?l<6*pw!SxNdPfxEMx4d>(ZEjGYjrwASm(F^MOdNV6b9>F6lNWR zii^7^o+>UT@Y6zxX<+w%4qz*@T0AxWSiyr#hSRRi)??P#R^Dw&{b|&1AqzdW)f-lN zbHqwEDP(wKVpHC_%ue3L=3KqeW`l^u{_1RywbK}%Pb;7jH2x4;^W!IK5RmbXFu~$^ zC)!`gf(-pEl6hV5y|2@5;O7xKTMq)%9Vy@h*j-bBgv5J|RgXX)*0p`UHPs;}nB_DLX zPOVpE;Ooqo_nrCP2cn4yfT0uLt*H95Io2qH`U)AFd%mPyXuuThX(1NLveHgj-AZCT4Gf`#AjX9p(*POT4&u) zTwU7cy^d_3kr6r2>*`EO91er*h+|28iiAEc*--a!nUy{`zb~2%NKA`aW!bYm23)fV z8$XuuU1Pr^Z6^Lej}wzKcKh*`SMpcCo5?GJye}n${x<>An2= zD|?!d=VVIx3~yG?%HQXyXiLDl3x zK6Dpc-LYCe3rAG^96vsU9PJ)^J;ZgBNizIg|6>$VhX^n?f1n7t>m_;ghxF0~1dzg} zdHUr(28{EG9n9oEAbgv@%DD`5S}pS*YiHktJD$5Fmt_ReZDa^PosMKgpBXN*t1*C) zBicKe488`F@_km{K`QQpPFGEV$;)BVZ=m!4dQ5tA_e{RHnM&cYaeUPPr44k)Ax_7y zGvnS&@GYo~#hOJp=}sxq zf{t8Lc(U5Xy}$H$ND`tYMa(p7C*LRRw}8pp&5KEiyjk5_0yKlWVO7~X#=J)!P1z?u zgo%P*-S0;?f1dw$2CJ1kp=UClBpw~aQ26cpS)fdq3NiQPreW?TTPIb?svV%2c!5u{ zSim$e_B|6v>Xm+V=tGL?Zv3zU#Tahk|)R zJwelQvNkM?i6yMuKOZw*`LE#lK;NsN4(Y^_Eye-|aZVvBg~HdfqbR56;Oz z$GClO8D#}Vab~76PPfK(>h~GCt=h^&v}Q*VolR-m$skq%$uq@XfByI9_dPG@t!T2c zJ{~HQlApSf0<{$pXREz-U4sBYND%?Pv_+qa@7vF>*EzI+jR2g*AZ;`7W+e5K*FDi+ z9nCw`rvdHd9?tO3dMUx~>x0{$uJ(>(SHaJNx#eVATQeGtvo<{x3nBC)7GUf7XEBss zJ>k5-;b$KooOE>qrjrZIS5fcYHjuzXYDwXco|CEK0p1PPmay$y9QTX&>GH4VAc|YL zw8pMsy0gZIX26DAG;u#;4XgDJa0r^E#AgO$aoe)yRzZy20{E9fWO0~+TOiysWQp|w!P=Fi0>iC8w*c|WEy@7*GSM=V$@7>}jZ~#E!f%^N80Rl%Z@A~z zekvq*g#{_xz=@-iht`gRKx}yd6*Nw4yl>Z;8*I3i5T{0QEWtTjUTo74*kDI`(HsAS z|0ZZD`fE>L-ems4T^qLytp*A$o2Q7#VXwp{1IQ6_`sOEs#MzS zRA@T5nJCuCA>G^BJ&u!gVN9K>pd6UwNn0I{rMS<-J*s8%ZNji1dS&j=;Uj2PEhmIm zoOTAY%J@YKN|YaF&;WDae7cWHrZ=&iIHFqEu6y@c=V`3?-^uW*mZR9yGhSY`xY?qU z*7GhEB1OPU1f}j4sYaJ#QdfvZbAE{OsvL1d&{et&ztW@?Q=}B@?A#x}rVsiu{H0WP z0~h5wWj8Si>or2|W=xgNv?}et0ebB?&G>s&Wp9DE8~`Bosq?Q%e}Ls`uAds7`sle+ zVhSpj_r0rESieh#1O&r$}6J|VyF16jGg z1sB$w-s+n#32sBymTTh-B*9+IDLwM7lXR|(k z#_|*ZYdy0oRpa6%CM!$tGZ{67vJK{s-|SJgU(}?({Y07BO+(9jSdM(XJ-q^OjLcT`LdcaFL{ZQPR+uK{Ga_3kh!jT{|Rvy zi-w)=g)InSzurLaKM-A67ex)uQ12Pht(;>$?tX~V3N#lcC9G%jl?#R3<8xNmNg%K z1RD@kpjcY^$C(8;Hi_3#LQ#n*hZhf7lba?422^CTk_a3Po%2Yn5{(QTUr)D*_A=ke z2|lzsTRDG5+80>a8cb6yLT5*@I;I_ZLVCO5Qf$yW`lg<#qf|_mBFp~O@Ilj;xkLxB zlYOY0jX@mVD7^`So#uv=i<9@K*#~uRe9eJ;(js(vJ0dbojRvLZWq&8+h)2@l=C?EQ z*Ad;NoLT*6DNoV@_VKNMPl6lnP)QVAF!vZmTPi(R;bJn{Gfvg@@q(a0jh6JEJI!K( zqLueVdt$wkyc+z9L0fE%f52wicpdri4Vf$sLh+P(KH5VE@01)eLVgXg`?mkmBG&Nh zEr5@y#0MVj*V{PihA?D*nL|OmTQs!{n8jvgS^hoSxf<;L9XRG^tNu^=%twdvsgASP z!}d((YcoLjp*F}Xdd?%e>XRE&f%b$_JO8TH;__L6Mj^8fz?aQ7X;$V|J2ANZtk+GO zesr*h+sjJq$+>7e_7;$*x7P6IiGBIWZXq(RkU&n?sH%_R`Xwus*RwyR8?27Wj8>h! zj6-(He}lFy8va(X?CDhAr5m1Gpi1vmInu1yz*3U`GpAR4!5TG#K>!8`raJlf2TJ2c zy36X&t7MTjbB4Ruq+7=L8gJsn*i$MD+3NjCKoZPMBodWcWy%Ug3*E#}N=G#n-&Np~ z;kNYY^b+N2Vcodw3-dc!osd?{#U!QR1~rmF57NSwN2|<-$NQgpCK$?A8^|W=b$|Q~ z%jhgC=vzk4TB6vgl72xvo|bN0_s^dj`H{d=)DE)=ZZZ*P+R?S^Ji?)%WNVnxz>KU- zlAZV}M`vVdX56a)YKuB`@cD;_b7BidY`*(gtkXjgvuwjUo3qY}g<=Sf<)?d6_6x2) zib0I>P_NPCQ>F9rN&Q^(Jck`XGGi!6^`Ja836QBt~VTorOQlj#+cTVA+N zcndiF4cMV+ij#Cvt14vXl3*z|Ct)3@WQ_Y+-op61&L~y93i34-S=DxZ?y2<=Sl9cW zUKVUx#%PqZc5Wh^z`s3}l$%lDE$P{JPa|fVS`y7|D&h;*JF!DZ1g*-Pg6Y#>G^K~hwFr`&MeN% zvGYg9g1A^kJCR{2u_yAXvcD7wg^GtnF_WXAqqA!6N1B(C9vqdGdZKf%g3U>oT*wST zzHBq@7%^}y_WCI%JJ#(MKzlhSy`%8mt=Wg&3EOIo@FRL#+T%Wy`js}NebbG7-4N62 zF34`HN?H01hOY{PhO}Weu0Ljm37`tOHRA3~c7HTXQXB$65u>j&eZ@T@Gug&Tx@4s7 z2xM&?y0r#&JQMb|dQ=U7rwtWwV_W2x(Ip1CZc?b$Qa#F$F& zFu*U*%2lb+5PrJt$7N?C2?KEfQp&*!qxM zziXBx^^(oVZSJ70T!Dv%E+c^Z&F?vzTj2h19V3iY$Olk=0dV#Hv^UvlZaP}Yf}^qI zVb$F9KS&Ze0#nM$wVEB*HF1(((=tMws8Ek(Nya`+duAoh z^S(E)Q~EKN26raOJcV5E)v(HpMcgwbuzEUu?zKAR2;)m1ZKOR0sY0jUYj|cLp|sIS zGDktPa&G5ADCdXloY= z&4?lu({~lZ5=Gng->HmtBcl7PI5}$krE6&UrkjvLNtpSUV7H&>Ua009-7;U`r zolTj0D=byow@sX_fUr(&#j92^9mg&&u%Gx$mL^LR=^mS{xNGkp1}?|WjLM_gH#i#9 zlK4&|`h!*+y?oS_jp8s!-G8bBc{uDpgx;8iS~m6n(Uz%Gj$M#8cK*@O^2T zZ910Qeq#HT&0ytD1%9|omHr|0%E@QRFm`+ZvZ8h8PwEq{>xrwo$v>@>UjGzLMoOl` zvXIlTxC&Jrix?k5qe!YHxXNve6aD8IQKhz?(e5)#0TdMulhU^UHLDUb4`%Kg`+|-% zxo@lAZ;AZ=&Y1M4kvkOJJt^&VIZxLv@e~UDOG)+i*suX%!Z$dsDP)A!`gD%~&!#r} z{qoH?5&GGEMSC8@nOIEck44W6*z*%V%&zS#nm}J!+bh}5wm@4(1164$1YucM`xXxl z_$RbZ#^Q27bFR+BvSgkN zy*2ObiP02|t6g96cTw$n_{mVAm<(>~pzjxc3pAM_zHGY3Kc=-L+JE)mQrX{IfNL4w z;_m+{QfFAr3koFi$!*3;?tLlQcjlt8;|SYZZ{^yL zP7_HYkHC}|3=^_JCmp9+t_vY9i!GG2PBgh6=^njnXkNN=osc%wKaE&;{GqIUIH4~2 zrO^4%pa!iSIQxlVWu?KsikW%}N1b7K7lep7QQCw}nw;Z}q2jO7Y+yfOZgKiZ-W~qqx=GQ^PjDD^53ms!JIp0bEn~yTL8z&KPaKi zWeE=``ut?e-^yVs4oJrY#W!87xM}@Nua;%%iPIZo{H1Qc_zJMlfs(MSUq(u3`p&w& z3#8d}agNrMQj14AcD0J@Hobq5DH;W0M|b{bB+=fQ-b-HS@U z=fFR#`bZ{+?Dxc2gRHO5wr^Il zNDd3vmj8bBx2s|gG}rX31^xmD&a&d^Qc2eDZ!6DfnfDc^?HWlck>cQg>+#I1>I;H# zaXCp2O)seyPVj*8R~Dvn$EU(YCEc0RVQof%Z2T9-rpU(htGSoooH>rowl;M#`O&eC zxVVVCl`>g~Y=;C_ZJi>QidfsxT8pQL!JtANO?nTz=JzO6@7_ztv#Il!3zgnR2IzH*V?PpSU|^ZE-s4 z?6|?l_Z=A|8^l)m>30wq)BR}65NwnF*QM+g2Ac&8t*7&Kx%0mBlUO zCHfp00XV8niDU4abZ|2EXdZLl*DO%C&ZL zyO!_6JccW99G^t>xyJ12_~uYJTMM;6+a=|MIXsBgom_fuGq>=) zZ%&Evj{F|H@7+5f;E^-Rsjc&$S37p5)4tHtBmr-C;|G~2#*kh+e^j@!cUs(DXsH|MqapV7wOaON@*+B6o| zFi!|)+T*l*xbQy#lLls9tK8vnrcQ4U!={8jWaWQyl+gDy>I{rENl;x18MB7awGjR5 zP_W@x>Ez9GQs}mgs}a>!3XZ6Z%@F$Ng+a}}T-on-)^pTs#-oHjT5o+kTMTbT>DX!5 zlcwSgF1UOGvPTCJ+agWN)ZhPm=0JQS6Rx6p&+K1(aecBl@~nSH7??BH!BW{enD*T; zD43E#+%!J?uYI_G8qz-j7Z4aC*5J8`N-y~Bt~4RsHR6GbtB75Qp$t%}hV<_Y^Qq;6}khj(Y2z&9x}(6oGKfl$3qYz)HoRie56| zU`Szyu4RkgRfX)%4V>)@^WyWHX3KQ4+0yvq#5Ur286{=!{NPxJ>S2++2yzHbU1n(@ zm!TrajpU2W6BpP65UxK3cH*nT)#s1h9#;l7-s$?aGw=AuZL7*1_gg7Q<+Ty3Ji2pQ zxG6Hj_illGhU?*2yt^Xso_kG`A=*VdFD&oZQ?pq)|#xvO}Dj zdiSE=4V=*(i|?dmOy0bRP@-8YnZoxy6&McV{C<3?f$KiUeJbkv_p$tZ7g5i*sUx!s zk@&|A65*qDd~bl5w*p_>mihz#kP*qfH9i(kOzAdjc4^pC2(blnFIF6B=Ba#tE}_{q zLKqMgY3FY5+!P8#2A2 ze|=}Z@$#h0L_JrpVrv`VUAjN65QU|C*HvGZ_~}{0OXaTmwKu#{Ly=K+pYs#%a3&G7 z0(x&J|1jP8ZQ!s1#OmGgiX;8&^=^+qpLxe0s-czCo4=5zv_^&P0YL;`lbP#IMXKsW z+YhzcX=NINMm|S315UkD9`881-yf+1YUWh*ywH1}%YKEuHRcE3#!o#;BRo9{!wA?eHoF(;%c7DH zKjeXt`^Ts|J{Q^tU6NX>R0GIU1>Rel9@Lx;r}9%?a8dVX@(>gJY-er(2{6Jaw=`FCvC;332+jn{G zAc($&^oLdEGv4_dv>sw|r}17U*$6qZ@17kdG4KxM#H%@2Yp?cCw%8w~j2B%RAFbVx z#T24Q4Gg>Pgv8|=F4MIqH^I?_Y21*YOJ0QO^s^M^^t~>RNh~dL z*fvyV?5iwlfZ6X-9+sPzdy|{JV_YE?ovJFT7XlyZFPQths}E`kP8wCOgCzGfYMJX^ml%O| zjXUBTD%-*l#nNFgv&J2l9!WN*?C)!Ka@ngrY^rP>uT#VOfKK{VwEaL4lN+JX$>y%V zSA0*o7FK@Fo4#$7BmJTP)!)uIjULBz9+6&Ff?+Po!gNo{0glfXfl1{LJGbu{Yc{h* zHCR|)?PyihD4VSX`JQ#|(*I3`|LVt1x}(189_l%Fd{8DOC@j~MaLA~QaO)+?&=nv8 z0=hFYrg_$~Fq^8&tAl{}&S@XY-FxQ@2~cmDy?HC>f{An8Hhk%)_W4 zyxxj3&%F4=TS%+rFm|FT0hlJ2)n7#{mh|?l!Zg_;NPmYj#0#!f<4xU-`eB?9mu2!D zCtByXQYEQ1@(f)_)_kIHdH(t`qXp^!L}VAeDzEU@2bXN@%WkvV1%}(`?Oa#=ddFoFI;sVI5kUM+O?wf!60P|>xcIJVa$acD-0IMG#gf!TA zy_gy``8|z!psbkWkOY~dK!o(4^45vCH^4>kqJCZZ>g0{eU)KU%fVeF~)w5G?o)Z^6 zy7n!TO$e6f@&KVET_k_JL|M62;h{{&5kdQL$ z_qZ=57Z244Vi^BjxffYZSJKa={-9C1zUye`WO?;c4(f1BZwx>^wJX0hw}__-Zj@Cq z&fa(b{Mve|;^j4Gam`V53sxYtwt*WdEHBay4BGf$Usu{sio156)MpuE>`@K#0alZ1 zZ!H~Il7=C1KBwr)wFsts)HA(w_vwD_o~&=39X6FuhTq^iw;4znEwGl Cxg4qh diff --git a/src/edu/stanford/rsl/tutorial/dmip/yu_fill.jpg b/src/edu/stanford/rsl/tutorial/dmip/yu_fill.jpg deleted file mode 100644 index 5c19b407edc3e9f4bc7c62fd080eb3c868585af6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16680 zcmYMb2RPgB7d9SymfE!|Vh1&E-C>5i-N@@<*q17%BaeSfiLMPscL9ly?Rwb!O+A&+xUvkRV~UOh=q|lnmU?_ ziUUL$1_^>d)HMGN@P9w3s6jNebo30s4^_^CsHv%`XlQ8vebM~;B`RtT8ZjkWPCYKL z4IQ`g&0ujAjJ|CQqzq5uL3|pbtbk}i(v&3-$D~(tL-n$WC@$!5XfJh5v@6k?JqeI+>#rNe7O&s`VrGVwr_<$ zW!Q?k_D6Ioazv5pkNh2W{3*x2?x}u{Vx|>-p87GG0`iL-+vl5_kG_hIO5%f^=u)PJ z4n4{h(EFnJQ??$hUEmwTmhMU7*5$zg@8#7JuK?qcn7O?q=rg#;rXj;_jJy=R^$}0#HkP&r5_l1%kp7?5ZEQ^6?(ww97hNr>8cPfaIre#0{{B(HiS!5i2!$Lr%=E}i z&1%06IFkN`z;4pvts}v$oWZNFA8~EX&C%`qKag6iUoG+JXFBv(pgD{xf1H2Bv!C>U zW`pY!*VfEK!#}WHqv`O{t67hzLecrUlSGcMLP`tSWSKO z7mbmaR%GX%=l%W9~guc_g1kx2rPPPy2umJW2PHGo?s;d-2s~gxZYuZ;v>F z`BzKT>-z0%Q(<{0#b{CMX49(A#^eKG1z!2xmTo_>w>7bK=Ri5IbFPPkMwXZ<>v+Jpr!^OXn^Xf5LA^13WyZjfc+nK6Df25 z>;pYvWKfg9CRwjxIx#h1t;fy--c|or-s%mgQ-qY#hCU_I}A0^jJD) zZJKrkY4_42MVoEV`{IR^?ztTH>D@@~KBoCpmCba7AlSYY$%5x27g zPZap|Lf@N&lp?mOz69H{^18ruzH7vzT+Q0%ci~ZuiUGdGui9U|vUJiTr`9O z)kJ6B(zyCamrN#)Xsg^IioE+juA$8Tck&odu^=etYuR)WkD;lN1oa9Vk4gDte%8d~ zg`coz$C|<{jU=7h21gYwF)KD*qN=yjX+7yOWT<-V