Skip to main content

Biologically accurate cat vision filter for neuroscience and visual perception research

Project description

CatVision - Biologically Accurate Cat Vision Filter

Python 3.8+ License: MIT

A Python package that replicates the biologically accurate vision of cats based on peer-reviewed research on feline retinal structure and visual characteristics.

Features

Biologically Accurate Cat Vision Simulation

  • ๐Ÿ”ต Spectral Sensitivity: Dichromatic vision with S-cone (450nm) and L-cone (556nm) peaks
  • ๐Ÿ‘๏ธ Vertical Slit Pupil: 3:1 aspect ratio for enhanced depth of field
  • ๐ŸŒ™ Rod-Dominated Vision: 25:1 rod/cone ratio for superior night vision
  • โœจ Tapetum Lucidum: 30% light reflection enhancement for low-light conditions
  • ๐Ÿ“ Reduced Spatial Acuity: 1/6 human acuity (3 vs 18 cycles per degree)
  • ๐ŸŽฌ Enhanced Temporal Processing: 55Hz flicker fusion threshold
  • ๐Ÿƒ Motion Detection: 1.8x human sensitivity with horizontal bias
  • ๐Ÿ‘€ Wide Field of View: 200ยฐ horizontal ร— 140ยฐ vertical

Installation

From PyPI

pip install catvision

From Source

git clone https://github.com/aryashah2k/catvision.git
cd catvision
pip install -e .

Development Installation

pip install -e ".[dev]"

Quick Start

from catvision import CatVisionFilter
import cv2

# Initialize the filter
cat_filter = CatVisionFilter()

# Load an image
image = cv2.imread('input.jpg')

# Apply cat vision transformation
result = cat_filter.apply_cat_vision(image, use_biological_accuracy=True)

# Save the result
cv2.imwrite('cat_vision_output.jpg', result)

Usage Examples

Basic Image Processing

from catvision import CatVisionFilter
import cv2

# Create filter instance
cat_filter = CatVisionFilter()

# Process single image
image = cv2.imread('photo.jpg')
cat_view = cat_filter.apply_cat_vision(image)
cv2.imwrite('cat_perspective.jpg', cat_view)

Video Processing

from catvision import CatVisionFilter
import cv2

cat_filter = CatVisionFilter()

# Process video sequence
frames = []  # Your video frames
processed_frames = cat_filter.apply_cat_vision_to_sequence(
    frames, 
    fps=30,
    use_biological_accuracy=True
)

Biological Validation

from catvision import CatVisionFilter

cat_filter = CatVisionFilter()

# Validate against biological data
test_images = [...]  # Your test images
validation = cat_filter.validate_biological_accuracy(test_images)

print(f"Overall Accuracy: {validation['overall_accuracy_score']:.2%}")
print(f"Spectral Sensitivity: {validation['spectral_sensitivity_validation']:.2%}")
print(f"Spatial Acuity: {validation['spatial_acuity_validation']:.2%}")

Visualizations

from catvision import CatVisionFilter

cat_filter = CatVisionFilter()

# Generate spectral sensitivity curves
cat_filter.plot_spectral_sensitivity_curves(save_path='spectral_curves.png')

# Visualize spatial acuity map
cat_filter.visualize_spatial_acuity_map(
    image_size=(480, 640),
    save_path='acuity_map.png'
)

# Show temporal frequency response
cat_filter.demonstrate_temporal_frequency_response(save_path='temporal_response.png')

Biological Parameters

All parameters are based on peer-reviewed research:

Parameter Value Human Comparison
Pupil Shape 3:1 vertical slit Circular
Rod/Cone Ratio 25:1 20:1
S-cone Peak 450nm (blue) 420nm
L-cone Peak 556nm (green-yellow) 534nm (M), 564nm (L)
Rod Peak 498nm (blue-green) 498nm
Spatial Acuity 3 cpd ~18 cpd
Flicker Fusion 55 Hz ~24 Hz
Field of View 200ยฐร—140ยฐ 180ยฐร—135ยฐ
Tapetum Reflectance 30% enhancement None

Architecture

The package uses a modular mixin architecture:

CatVisionFilter
โ”œโ”€โ”€ SpectralMixin (spectral.py)
โ”‚   โ”œโ”€โ”€ Spectral sensitivity curves
โ”‚   โ””โ”€โ”€ Color perception adjustments
โ”œโ”€โ”€ SpatialMixin (spatial.py)
โ”‚   โ”œโ”€โ”€ Pupil kernel (vertical slit)
โ”‚   โ”œโ”€โ”€ Spatial acuity reduction
โ”‚   โ””โ”€โ”€ Field of view transformation
โ”œโ”€โ”€ TemporalMixin (temporal.py)
โ”‚   โ”œโ”€โ”€ Temporal frequency processing
โ”‚   โ””โ”€โ”€ Flicker fusion modeling
โ”œโ”€โ”€ MotionMixin (motion.py)
โ”‚   โ”œโ”€โ”€ Optical flow (Lucas-Kanade/Farneback)
โ”‚   โ”œโ”€โ”€ Motion enhancement
โ”‚   โ””โ”€โ”€ Directional sensitivity
โ”œโ”€โ”€ LowlightMixin (lowlight.py)
โ”‚   โ”œโ”€โ”€ Tapetum lucidum effect
โ”‚   โ””โ”€โ”€ Rod dominance simulation
โ”œโ”€โ”€ VisualizationMixin (visualization.py)
โ”‚   โ””โ”€โ”€ Scientific visualizations
โ””โ”€โ”€ ValidationMixin (validation.py)
    โ””โ”€โ”€ Biological accuracy validation

API Reference

Core Class

CatVisionFilter()

Main filter class that combines all cat vision characteristics.

Methods:

  • apply_cat_vision(image, previous_frame=None, kernel_size=15, use_biological_accuracy=True) - Apply complete cat vision pipeline
  • apply_cat_vision_to_sequence(frame_sequence, fps=30, use_biological_accuracy=True) - Process video sequence
  • get_filter_parameters() - Get current biological parameters
  • save_parameters(filepath) - Save parameters to JSON file
  • validate_biological_accuracy(test_images, ground_truth_data=None) - Validate filter accuracy

Visualization Methods:

  • plot_spectral_sensitivity_curves(save_path=None) - Plot photoreceptor spectral curves
  • visualize_spatial_acuity_map(image_size, save_path=None) - Show acuity distribution
  • demonstrate_temporal_frequency_response(save_path=None) - Display temporal sensitivity
  • visualize_pupil_kernel(kernel_size=15, save_path=None) - Show pupil convolution kernel

Examples

The package includes comprehensive examples in the examples/ directory:

  • basic_usage.py - Simple image processing
  • video_processing.py - Video sequence processing
  • biological_validation.py - Accuracy validation
  • visualizations.py - Generate all visualizations

Run examples:

python examples/basic_usage.py
python examples/biological_validation.py
python examples/visualizations.py

Testing

Run the test suite:

# Run all tests
pytest tests/

# Run with coverage
pytest tests/ --cov=catvision --cov-report=term-missing

# Run specific test module
pytest tests/test_spectral.py -v

Scientific Background

This implementation is based on published research on cat vision:

Key References

  1. Spectral Sensitivity: Loop et al. (1987) - "Spectral characteristics of cat retinal ganglion cells"
  2. Spatial Acuity: Blake (1979) - "The visual acuity of the cat"
  3. Temporal Processing: Pasternak & Merigan (1981) - "The luminance dependence of spatial vision in the cat"
  4. Motion Detection: Orban et al. (1986) - "Velocity selectivity in the cat visual system"
  5. Tapetum Lucidum: Ollivier et al. (2004) - "Retinal structure and light intensification"

Biological Accuracy

The filter achieves high biological accuracy through:

  • Direct implementation of measured spectral sensitivity curves
  • Frequency-domain spatial filtering based on contrast sensitivity functions
  • Temporal processing matching measured flicker fusion thresholds
  • Motion detection calibrated to behavioral measurements

Performance

  • Single Image (640ร—480): ~100ms (biological mode)
  • Video Frame (1080p): ~200ms per frame
  • Memory Usage: <500MB for typical workloads

Requirements

  • Python 3.8+
  • opencv-python-headless >= 4.8.0
  • numpy >= 1.24.0
  • scipy >= 1.10.0
  • matplotlib >= 3.7.0
  • Pillow >= 10.0.0

Contributing

Contributions are welcome! Please fork the Repository, create a feature branch, and submit a pull request!

Development Setup

git clone https://github.com/aryashah2k/catvision.git
cd catvision
pip install -e ".[dev]"
pytest tests/

License

This project is licensed under the MIT License - see the LICENSE file for details.

Citation

If you use this package in your research, please cite:

@software{catvision2025,
  title={CatVision: Biologically Accurate Cat Vision Filter},
  author={Arya Shah and Vaibhav Tripathi},
  year={2025},
  url={https://github.com/aryashah2k/catvision}
}

Acknowledgments

  • Based on decades of cat vision research by neuroscientists worldwide
  • Inspired by the need for accurate animal vision simulation in research
  • Built with modern Python best practices and scientific computing tools

Contact

  • Issues: GitHub Issues
  • Email: {arya[dot]shah, vaibhav[dot]tripathi}[at]iitgn[dot]ac[dot]in

Note: This package is designed for scientific and educational purposes. For neuroscience research applications, please validate results against your specific requirements.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

catvision-1.0.0.tar.gz (39.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

catvision-1.0.0-py3-none-any.whl (26.5 kB view details)

Uploaded Python 3

File details

Details for the file catvision-1.0.0.tar.gz.

File metadata

  • Download URL: catvision-1.0.0.tar.gz
  • Upload date:
  • Size: 39.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for catvision-1.0.0.tar.gz
Algorithm Hash digest
SHA256 290ac28e1260ce023f6952ca7724ef5959a6dc6799e70380c6fe6fedb151fec5
MD5 53de90ce827cfdc355b8d0a27ad72c2b
BLAKE2b-256 518aeca98afe3d0a181d9eb14e45cde287927c9fd2c98feaa53cc8822bb5c300

See more details on using hashes here.

File details

Details for the file catvision-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: catvision-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 26.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for catvision-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b0b3fbe8010f717f420329c2b8135f681c53253fe21b520555dccb7ec438f855
MD5 80c060f59f005ebb7ec4646737a5dc44
BLAKE2b-256 34ab743cc5aaad948a5947c9da4a3a81967f2993c5024714061365dfdf8e620d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page