Pieces for preprocessing images and training/inferencing a simple CNN classifier.
The nozzle workflow uses file-based stage connections. Pieces pass paths to JSON files, not in-memory objects:
NozzleInnerBoundaryPieceruns inner boundary ray inference and writes boundary points plus the ray center to JSON. Its ray center can come from explicit x/y, an optional circle JSON, or the image center.NozzleCirclePieceloads a boundary-points JSON, fits the generic circle model, and writes center/radius/errors to JSON.NozzleOuterBoundaryPieceruns outer boundary ray inference and writes boundary points to JSON. Its ray center can come from explicit x/y, an optional circle JSON, or the image center.NozzleBoundaryPointsVisualizationPieceloads one boundary-points JSON and renders points/connecting lines onto an image with configurable colors and opacity.NozzleCircleVisualizationPieceloads one circle JSON and renders the circle/center marker onto an image with configurable colors and opacity.NozzleVisualizationPieceloads the image plus inner/outer boundary and circle JSON files, renders Wizard-like final/boundary/circle/area-error images with configurable boundary/circle colors and opacity, and writes metrics including median inner and outer circle radius in pixels.
The current Wizard-style chain can be built from these pieces, for example:
NozzleInnerBoundaryPiece(iteration rays)
-> NozzleCirclePiece(refined center)
-> NozzleInnerBoundaryPiece(final rays, center from previous circle)
-> NozzleCirclePiece(final inner circle)
-> NozzleOuterBoundaryPiece(center from final inner circle)
-> NozzleCirclePiece(final outer circle)
-> NozzleVisualizationPiece(render images + metrics)
Each boundary piece accepts a ray count, but the ray loop runs internally inside that piece.