Giter VIP home page Giter VIP logo

cis's Introduction

Introduction

This software contains Andrew Hundt and Alex Strickland's implementation of the Programming Assignments (PA) for Computer Integrated Surgery aka CIS1 at Johns Hopkins University 2014, taught by Dr Russell Taylor. This readme is organizes information about the course for future reference.

Assignment Groupings:

HW1

Computer integrated surgical device proposal document

PA1-2 and HW2-3

Point cloud to point cloud transforms, distortion correction

PA3-4 and HW4

Iterative Closest Point, matching sensor point clouds to a mesh

Getting Started

To get your bearings look at the documentation in the cis/doc/ folder. The most important information can be found at:

  • cis/doc/CIS_Software_Manual.pdf
    • Documentation of the completed assignments
  • cis/doc/referenceSources/
    • Reference PDF files from lectures and other sources that contain much the information needed to understand and implement the algorithms discussed in the class.
    • Homework Assignment PDFs for HW1-4
    • Programming Assignment PDFs for PA1-5
  • Homework 1 Intermedullary Nailing
    • Surgery used to repair fractured, or broken bones
    • Assignment was to design computer integrated devices to improve the surgical procedure and essentially create a basic device, system, and business plan proposal.

Most important Code

Search the files for the following function names to find the most important function implementations for the class. More details are available in the PDF manual and in the doxygen documentation.

PA1-2

PA1

PA1 was completed late, but our output passed all of the tests during the course of PA2 so these components should be fairly reliable.

hornRegistration()

point cloud to point cloud transformations. If two point clouds contain the same set of points in different reference frames, this function figures out the 4x4 homogenous transform matrix between the two clouds.

SVDSolve()

Singluar Value Decomposition matrix algorithm. Used for things such as point cloud to point cloud transform detection in hornRegistration. This is a broadly useful tool, we used the eigen library's implementation here.

pivotCalibration()

Calibrates detected medical devices.

PA2

PA2 final output had a couple bugs, so not everything for PA2 works 100%. This does not affect PA3-4.

We have encountered errors in our software that we have narrowed down to points after the EM distortion calibration steps, because we have been able to verify our Bernstein functions using unit tests and debug data. However, a bug remains in either the steps for calculating Freg or finding each of the CT fiducial. Since the underlying components are largely well tested, we expect the bug to be in the transform or data flow steps of the generateOutputFile() function in cisHW1-2.cpp or the function definitions in PA2.hpp.

CorrectDistortion()

Likely ok, but may have serious bugs. Correct distortions in one point cloud by utilizing distorted and undistorted versions of a second point cloud. Bernstein Polynomials are utilized to perform the correction.

BernsteinPolynomial()

Likely ok, but may have serious bugs. Find the solution to the Bernstein polynomial when at varying degrees and points depending on the input. Used for distortion correction in this assignment.

Fmatrix()

May have serious bugs. Multiplies the Bernstein polynomial into a matrix so that a function of every degree of i, j, and k are found and a distortion calibration can be done using the matrix.

PA3-4

Iterative Closest Point

ICPwithSimpleSearchStep()

Primary function implementing the first iteration of the simple search ICP algorithm.

ICPwithSpatialIndexStep()

Primary function implementing the first iteration of the spatial index ICP algorithm to increase efficiency.

FindClosestPoint()

Finds the closest point on the triangle to a point in space. If the closest point lies with in triangle, then the function finds the nearest point internally. Else if the closest point lies on an edge or vertex, the function OutsideOfTriangle() is called to find the nearest point.

TerminationCriteria

TerminationCriteria is a C++ Class implemented to evaluate if the current iterations of the ICP algorithm is within our desired error threshold, and to collect statistics on the error as ICP progresses.

PA5

PA5 was optional and not completed.

License

Copyright (c) 2014 Andrew Hundt and Alex Strickland

See COPYING file for license information.

Installation

See build and installation instructions given in the INSTALL file.

Package Content

Path Content description
BasisProject.cmake Meta-data used for the build configuration.
[CMakeLists.txt] 2 Root CMake configuration file.
[config/] 3 Package configuration files.
[data/] 4 Data files required by this software.
[doc/] 5 Documentation source files.
[example/] 6 Example files used for demonstration.
[include/] 7 Public header files.
[src/] 8 Source code files.
[test/] 9 Regression and unit tests.

cis's People

Contributors

ahundt avatar astrick3 avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

cis's Issues

Programming HW1

@astrick3
@ahundt

TODO List:

  • pivot calibration
  • figure out how frames and trackers interact
  • write tests for all input data sets
  • write synthetic test
  • expand report
  • verify all questions are answered completely
  • verify command line application
  • generate results files
  • verify results files
  • make sure all people can get access to our submission (paul wilkening, etc.)
  • remove skipping of first index in RIp, move skip out to higher level
  • document and explain what's happening before hornRegistration better

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.