SandScape is a web-based application for automated sediment grain size analysis using computer vision and machine learning models. It enables users to upload sediment images, detect scale references, and generate detailed grain size distribution reports.
- Automated coin detection for scale calibration
- Grain size analysis using advanced ML models
- Interactive data visualization and mapping
- RESTful API for programmatic access
- Docker-based deployment for easy setup
The application is composed of the following services:
- Frontend: Next.js web application providing the user interface
- Backend: FastAPI server handling image processing and API requests
- YOLO Model: Coin detection service running in Docker
- Sedinet Model: Grain analysis service running in Docker
- Docker and Docker Compose
- Git
-
Clone the repository:
git clone https://github.com/iamnycx/sandscape.git cd sandscape -
Start all services using Docker Compose:
docker-compose up --build
-
Access the application:
- Frontend: http://localhost:3000
- Backend API: http://localhost:8080
- Open the web application in your browser
- Upload sediment images with a reference coin for scale
- Wait for automatic processing and analysis
- View detailed grain size distributions and visualizations
GET /image- Retrieve list of processed imagesPOST /image/- Upload new image for analysisGET /getimage/{id}- Retrieve processed image by ID
cd client
npm install
npm run devcd server
pip install -r requirements.txt
uvicorn main:app --reloadModel services run in Docker containers. Refer to individual model directories for development setup.
- Frontend: Next.js, React, TypeScript, Tailwind CSS
- Backend: FastAPI, Python, Uvicorn
- ML Models: YOLOv8 (coin detection), Sedinet (grain analysis)
- Visualization: D3.js, Leaflet, Recharts
- Deployment: Docker, Docker Compose
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
This project is licensed under the MIT License.