Project summary: Electrical impedance tomograph (EIT) utilizes non-invasive techniques for monitoring medial conditions. Its a low cost and non-invasive technology that allows for persistant imaging. However, compared to other imaging techniques, EIT has very low spatial resolution and low contrast. This results in difficulty when differentiating multiple targets within a small space. The GREIT algorithm when implemented resulted in clear images for a single object, and relatively clear images for two objects of different sizes.
Goal: What spatial and algorithmic configurations optimize the resolution of objects in a controlled tank environment?
bash git clone https://github.com/yourusername/Multi-Target-Detection-in-EIT---KISMED.git cd Multi-Target-Detection-in-EIT---KISMED pip install -r requirements.txt
- Python 3.8+
- numpy
- matplotlib
- tqdm
- scipy
- pandas
This project extends upon a previous project linked here [https://github.com/EITatKISMED/GREIT_reconstruction]. The previous project worked idealy for single object reconstruction. However this project extends this to multi-object reconstruction. It will maintain, backwards compatability for the original project. Key note: the multi-object detection relizes on coordinate to be included as a variable within the METADATA.txt file. If this is not completed, the original sequence will run instead.
Reconstruction Techniques
- TSVD (reconstruct_images_tsvd)
- ART (reconstruct_images_art)
- SIRT (reconstruct_images_sirt)
Evaluation & Metrics Figures of Merit (FoMs):
- Amplitude Response (AR)
- Position Error (PE)
- Shape Deformation (SD)
- Ringing (RING)
- Resolution (RES)
Visualization
- plot_compare(): compare multiple reconstruction techniques
- plot_masks(): show mask overlays for detected objects
- plot_all_coordinates_mask(): visualize all ground-truth target areas
Multi-Target-Detection-in-EIT---KISMED/
├── src/
│ ├── reconstructions.py
│ ├── reconstruction_matrix.py
│ ├── MultiGround.py
│ ├── fom_multi.py
│ ├── fom.py
│ ├── utils.py
├── data/
│ ├── combined.pkl
│ ├── metadata.txt
├── results/
├── requirements.txt
└── README.md
analyze_images()
-
Creates masking behavior based on the included variables. Computes both an approximatation of number of objects and exact number of objects
save_path, #Notes the location to save image results image_set, #Loops through target images from the separation function coordinates_t, #Determines the error between the original coordinates and the assumed location of the objects label="", #Used to label the output figures image_index=1, #Additional iteration counter top_n=None, #Variable to determine if the number of objects is computed or provided use_filter=False, #Determines if image should be filtered (used for TSVD images) use_size_based=False, #Determines if size of the object is provided or it is assumed min_ratio=None, #Determines the minimum size of objects should be detected reshape_shape=(32, 32), #Shape of image peak_threshold_frac=0.3, # 30% of the maximum amplitude can be included as seperate peaks validation_ratio=0.8, # Determines the percentage of the object should be within 30% of the specific object peak.
reconstruct_images_tsvd (y_t, y_n, R, k=50, target_min=None, target_max=None)
y_t, #The voltage differences within the target measurement
y_n, #The voltage differences within the noise measurements
R #The reconstruction matrix
k=50 #Set number for determining quality of image
target_min=None
target_max=None