# Contributing to Sampling & Quantization Demo Thank you for your interest in contributing! This educational tool is designed for teaching image analysis concepts. ## How to Contribute ### Reporting Issues If you find bugs or have suggestions: 1. Check if the issue already exists in the GitHub Issues 2. Create a new issue with: - Clear description of the problem - Steps to reproduce (if it's a bug) - Expected vs actual behavior - Screenshots if applicable ### Suggesting Enhancements We welcome ideas for educational improvements: - Additional visualization methods - New image processing concepts to demonstrate - Better explanations of existing concepts - Interactive exercises or quizzes - Support for additional image formats ### Code Contributions 1. **Fork the repository** 2. **Create a feature branch:** ```bash git checkout -b feature/your-feature-name ``` 3. **Make your changes:** - Follow the existing code style - Add comments for complex logic - Update documentation if needed 4. **Test your changes:** ```bash streamlit run app.py ``` - Test all interactive features - Verify calculations are correct - Check edge cases 5. **Commit your changes:** ```bash git add . git commit -m "Add: Brief description of your changes" ``` 6. **Push and create a Pull Request:** ```bash git push origin feature/your-feature-name ``` Then create a PR on GitHub with a clear description. ## Code Style Guidelines ### Python Code - Follow PEP 8 style guide - Use meaningful variable names - Add docstrings to functions: ```python def function_name(param): """ Brief description. Args: param: Description Returns: Description of return value """ ``` ### Streamlit UI - Keep UI simple and intuitive - Use consistent markdown formatting - Add helpful tooltips (help parameter in widgets) - Organize content in logical sections ### Documentation - Update README.md for major features - Keep QUICKSTART.md up to date - Add inline comments for complex algorithms - Include references to educational sources ## Educational Content Guidelines This is an educational tool, so clarity is paramount: 1. **Explanations should be:** - Accurate and technically correct - Easy to understand for graduate students - Progressive (simple concepts first) - Include visual examples 2. **Interactive elements should:** - Provide immediate feedback - Show clear cause-and-effect - Include reasonable default values - Have helpful tooltips 3. **Calculations should:** - Be transparent and explainable - Show formulas when relevant - Include units - Be verifiable ## Testing Before submitting a PR, please verify: - [ ] App runs without errors - [ ] All sliders and controls work correctly - [ ] File size calculations are accurate - [ ] Images display properly - [ ] Compression comparison works - [ ] Educational content is clear - [ ] No typos in text ## Questions? Feel free to open an issue for discussion before starting major work. ## License By contributing, you agree that your contributions will be licensed under the MIT License.