pr0ntools:cfcv:prawnsweeper
Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
pr0ntools:cfcv:prawnsweeper [2025/08/04 21:21] – created mcmaster | pr0ntools:cfcv:prawnsweeper [Unknown date] (current) – removed - external edit (Unknown date) 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | Confocal Imaging Computer Vision (CFCV) tookit | ||
- | |||
- | This page is about the prawnsweeper Python GUI that allows a human to quickly review and fix CV results. | ||
- | |||
- | Proof of concept stage / not intended for general use. | ||
- | |||
- | |||
- | ====== Keyboard and mouse quick summary ====== | ||
- | |||
- | Left click: metal operation | ||
- | * Void => metal | ||
- | * Unknown => metal | ||
- | * Metal => unknown | ||
- | |||
- | Right click: void operation | ||
- | * Unknown => void | ||
- | * Metal => void | ||
- | * Void => unknown | ||
- | |||
- | Shift click: do above operation on all adjacent tiles (self inclusive) of the same tile type | ||
- | |||
- | Enter/ | ||
- | |||
- | Escape: submit but flag for administrative review. | ||
- | |||
- | M: convert all unknowns to blue metal | ||
- | |||
- | W: convert all unknowns to white void | ||
- | |||
- | |||
- | ====== Introduction ====== | ||
- | |||
- | An integrated circuit is composed of metal connecting various areas together to form nets. We want to recover netlists from various chips but so far all efforts have revolved around manually drawing polygons from microscope images. | ||
- | |||
- | Can we do better? | ||
- | * The system is now regenerative: | ||
- | * Grid => simple algorithms determine if metal or not in that square | ||
- | |||
- | However, this computer vision process is still far from perfect and generates a lot of uncertainties. | ||
- | |||
- | |||
- | ====== GUI overview ====== | ||
- | |||
- | {{: | ||
- | |||
- | At startup, the left area has the raw CV result and the right has the original image with the CV result overlaid on top. You'll notice there are a few different tile colors on the left: | ||
- | * Blue metal: " | ||
- | * White void: no material present | ||
- | * Orange unknown: could not decide if metal or void | ||
- | |||
- | In most images there will be a large amount of blue and white with a number of orange tiles. | ||
- | |||
- | The reason why most warnings are metal is because the thresholding algorithm currently used has a hard time dealing with vias. Future versions will hopefully handle them better. | ||
- | |||
- | |||
- | ====== Clicking ====== | ||
- | |||
- | Left clicking is metal oriented: it turns tiles into metal. | ||
- | |||
- | You may click on either the grid on the left or the image on the right. | ||
- | |||
- | |||
- | {{: | ||
- | |||
- | {{: | ||
- | |||
- | Above: before and after shift right clicking to remove entire upper left unknown group | ||
- | |||
- | Sometimes its useful to change entire clusters at once. This can be accomplished by shift clicking. | ||
- | |||
- | |||
- | ====== Global operations ====== | ||
- | |||
- | {{: | ||
- | |||
- | {{: | ||
- | |||
- | Above: using " | ||
- | |||
- | Often the entire remaining unknowns will below to one type or another. | ||
- | |||
- | |||
- | ====== Grid errors ====== | ||
- | |||
- | {{: | ||
- | |||
- | Above: Y grid error visible in the upper left and lower right corner | ||
- | |||
- | If the grid is detected incorrectly it will disrupt metal detection. | ||
- | |||
- | For major errors (ex: grid detection failed) press Escape to skip this tile. It will be reviewed by an administrator. | ||
- | |||
- | |||
- | ====== Splash page ====== | ||
- | |||
- | {{: | ||
- | |||
- | If you see this the server has no jobs available | ||
- | |||
- | NOTE: the splash page can be edited with standard mouse and keyboard shortcuts. | ||
- | |||
- | |||
- | ====== Roadmap ====== | ||
- | |||
- | The GUI frontend will become some sort of web app so that it can be used from a standard browser without installing any software. | ||
- | |||
- | There' | ||
- | |||
- | ====== Running ====== | ||
- | |||
- | Ubuntu 12.04x64 | ||
- | |||
- | sudo apt-get install -y python-qt4 python-imaging python-pyicu | ||
- | |||
- | git clone https:// | ||
- | |||
- | cd cf/sweeper | ||
- | |||
- | python sweeper.py --host sketchyurl.com | ||
- | |||
- | ====== Backend ====== | ||
- | |||
- | This is for informational purposes only. Its not required to use the prawnsweeper GUI. | ||
- | |||
- | Data is collected using [[mcmaster: | ||
- | |||
- | The core CV engine is in cfcv.py. | ||
- | * Straighten image | ||
- | * Determine design grid | ||
- | * Calculate metal and void thresholds | ||
- | * Apply thresholds to image | ||
- | * Munge output to try to heuristically correct errors | ||
- | |||
- | cfcv_batch.py is a batch processor around the engine that allows, for example, running jobs in parallel. | ||
- | |||
- | Once cfcv_batch.py completes the output directory is fed into the prawnsweeper job distribution server, server.py. | ||
- | |||
- | |||
- | ====== References ====== | ||
- | |||
- | * [[https:// | ||
- | |||
pr0ntools/cfcv/prawnsweeper.1754342460.txt.gz · Last modified: 2025/08/04 21:21 by mcmaster