This paper presents MoonPath, an innovative framework for lunar surface analysis that combines hyperspectral imaging with computer vision techniques to create comprehensive hazard maps for rover pathfinding. Building upon the mineral mapping methodology developed by Sivakumar and Neelakantan (2015), our approach integrates multiple data sources from the Chandrayaan-2 mission, including high-resolution optical images, terrain mapping camera data, and hyperspectral data. The system employs advanced image processing, machine learning algorithms, and multi-spectral data fusion to identify and classify potential hazards on the lunar surface. Experimental results demonstrate the effectiveness of our approach in detecting craters, analyzing slopes, and generating detailed hazard maps that can be used for autonomous rover navigation.
Lunar surface analysis and hazard mapping are critical components of successful space missions, particularly for autonomous rover operations. The challenges of navigating the lunar terrain require sophisticated analysis of multiple data types and robust hazard detection systems. This paper introduces MoonPath, a comprehensive solution that addresses these challenges through the integration of hyperspectral imaging and computer vision techniques.
The need for accurate lunar surface analysis arises from several factors. Safe landing site selection is crucial for mission success, while autonomous rover navigation requires detailed understanding of the terrain. Scientific exploration planning and mission risk assessment further emphasize the importance of comprehensive surface analysis.
Previous approaches to lunar surface analysis have primarily focused on optical image processing, terrain mapping, crater detection, and slope analysis. Recent advances in hyperspectral imaging have enabled mineral composition analysis, surface feature classification, and terrain characterization.
Note: Images for the output at different stages
The MoonPath framework consists of three main components: data preprocessing, feature analysis, and hazard mapping. The system processes multiple data sources to create comprehensive hazard maps.
# Data loading and preprocessing import rasterio import cv2 import numpy as np from rasterio.plot import reshape_as_image # Load TMC data rasterdat = rasterio.open(img_01_tif, "r+") img = rasterdat.read() img = reshape_as_image(img) img = cv2.cvtColor(img, cv2.COLOR_BGRA2BGR) # Load relief data img_relief = cv2.imread(img_01_relief_tif) img_relief_gray = cv2.cvtColor(img_relief, cv2.COLOR_BGR2GRAY)
The system employs a sophisticated approach to slope analysis and hazard detection using relief data:
# Slope analysis and masking blur = cv2.GaussianBlur(img_roi, (5,5), 0) blur_hsv = cv2.cvtColor(blur, cv2.COLOR_BGR2HSV) # Create mask for high slope areas lower = np.array([0,0,0], dtype = "uint8") upper = np.array([105,160,15], dtype = "uint8") mask = cv2.inRange(blur_hsv, lower, upper) mask = 255 - mask # Apply mask and highlight high slope areas img_roi = cv2.bitwise_and(img_roi, img_roi, mask = mask) img_roi[mask == 0] = (0, 0, 200) # Process relief data for slope analysis mask_relief = cv2.inRange(img_relief_gray, 40, 255) # slope z factor = 20.000000 blur_relief = cv2.GaussianBlur(mask_relief, (21, 21), 0) canny_edges_relief = cv2.Canny(blur_relief, 1, 6) canny_edges_3channel_relief = cv2.cvtColor(canny_edges_relief, cv2.COLOR_GRAY2BGR) canny_edges_3channel_relief *= np.array((1,1,1),np.uint8) # Combine slope analysis results img_roi = cv2.addWeighted(img_roi, 0.9, canny_edges_3channel_relief, 1, 0)
Ridge detection is implemented using the Canny edge algorithm with specific parameters optimized for lunar surface features:
# Ridge detection using Canny edge algorithm gray1 = cv2.cvtColor(img_roi_copy1, cv2.COLOR_BGR2GRAY) blur1 = cv2.GaussianBlur(gray1, (45, 45), 0) canny_edges = cv2.Canny(blur1, 4, 10) canny_edges_3channel = cv2.cvtColor(canny_edges, cv2.COLOR_GRAY2BGR) canny_edges_3channel *= np.array((1,1,0),np.uint8) # Yellow edges for visibility # Combine with original image img_roi = cv2.addWeighted(img_roi, 0.7, canny_edges_3channel, 0.5, 0.0, 0.0)
The system employs a multi-level crater detection approach using the Hough Circle Transform:
# Multi-level crater filtering gray = cv2.cvtColor(img_roi, cv2.COLOR_BGR2GRAY) gray_blurred = cv2.blur(gray, (3, 3)) # Primary crater filter for larger craters detected_circles = cv2.HoughCircles(canny_edges, cv2.HOUGH_GRADIENT, 1, 20, param1 = 35, param2 = 25.5, minRadius = 0, maxRadius = 45) # Secondary (finer) crater filter for smaller craters detected_circles1 = cv2.HoughCircles(gray_blurred, cv2.HOUGH_GRADIENT, 1, 20, param1 = 35.7, param2 = 25.6, minRadius = 0, maxRadius = 27) # Draw detected craters if detected_circles is not None: detected_circles = np.uint16(np.around(detected_circles)) for pt in detected_circles[0, :]: a, b, r = pt[0], pt[1], pt[2] cv2.circle(img_roi, (a, b), int(r/1.5), (0, 255, 0), 2)
OVERLAY OF EDGE, RIDGE AND CRATER MAPPING ON ORIGINAL MAP
The hyperspectral analysis pipeline processes IIRS data to identify mineral compositions and surface features:
# Hyperspectral data processing import numpy as np from sklearn.decomposition import PCA from sklearn.cluster import KMeans # Load and preprocess hyperspectral data def process_hyperspectral_data(iirs_data): # Reshape data for PCA n_samples, n_bands = iirs_data.shape data_2d = iirs_data.reshape(-1, n_bands) # Apply PCA for dimensionality reduction pca = PCA(n_components=0.95) # Preserve 95% variance pca_result = pca.fit_transform(data_2d) # Extract endmembers using K-Means n_endmembers = 7 kmeans = KMeans(n_clusters=n_endmembers) kmeans.fit(pca_result) # Get endmember spectra endmember_indices = np.argmin(kmeans.transform(pca_result), axis=0) endmember_spectra = data_2d[endmember_indices] return endmember_spectra, kmeans.labels_ # Analyze spectral signatures def analyze_spectral_signatures(endmember_spectra): # Calculate spectral indices absorption_features = [] for spectrum in endmember_spectra: # Identify absorption bands absorption_bands = find_absorption_bands(spectrum) absorption_features.append(absorption_bands) return absorption_features # Map mineral compositions def map_mineral_compositions(labels, absorption_features): mineral_map = np.zeros_like(labels) for i, features in enumerate(absorption_features): # Classify based on spectral features mineral_type = classify_mineral(features) mineral_map[labels == i] = mineral_type return mineral_map
This hyperspectral analysis pipeline enables the identification of distinct mineral compositions and their spatial distribution across the lunar surface, which is crucial for hazard detection and terrain characterization.
The implementation is available as an open-source project at:
GitHub Repository
The system incorporates hyperspectral analysis, hazard mapping, image processing, and visualization tools to provide a comprehensive solution for lunar surface analysis.
We utilize three specific data sources from the Chandrayaan-2 mission, selected using the South Pole Stereographic projection view from the ISRO's Chandrayaan-2 Map Browse interface (https://chmapbrowse.issdc.gov.in/MapBrowse/):
The Terrain Mapping Camera (TMC) provides high-resolution stereo imaging for terrain analysis and slope mapping. The Imaging Infrared Spectrometer (IIRS) delivers hyperspectral data for mineralogical analysis, while the Optical High Resolution Camera (OHRC) offers very high-resolution panchromatic images for detailed feature detection.
The data selection process involved using the South Pole Stereographic projection view in the Chandrayaan-2 Map Browse interface to identify regions of interest around the lunar south pole. We downloaded corresponding datasets from all three instruments and ensured their temporal and spatial alignment.
The system successfully identifies high slope areas, ridge features, and crater boundaries. The endmember analysis reveals seven distinct spectral signatures, each corresponding to different mineral compositions in the lunar surface. These endmembers are used to identify mineralogical variations, map surface composition, and detect potential hazards based on material properties.
The final hazard map combines slope analysis, ridge detection, and crater identification to provide a comprehensive view of potential hazards on the lunar surface.
Our analysis utilizes data from the Chandrayaan-2 mission's three primary instruments:
Terrain Mapping Camera (TMC):
Imaging Infrared Spectrometer (IIRS):
Optical High Resolution Camera (OHRC):
The data selection process involved using the South Pole Stereographic projection view in the Chandrayaan-2 Map Browse interface to identify and download corresponding datasets from all three instruments.
Our analysis pipeline incorporates:
Image Processing:
Hyperspectral Analysis:
Hazard Mapping:
The system uses several key parameters for processing. Gaussian blur kernel sizes of (5,5) are used for general processing, while (21,21) is used for relief analysis. The Canny edge detection employs thresholds of 4-10 for ridges, and slope analysis uses a threshold of 40-255.
The complete processing pipeline includes data loading and preprocessing, slope analysis and masking, ridge detection, and feature combination and visualization. This integrated approach ensures comprehensive hazard detection and mapping.
Current limitations of the system include:
Data Limitations:
Technical Limitations:
Methodological Limitations:
Future work will focus on:
Technical Improvements:
Feature Enhancements:
MoonPath provides a comprehensive solution for lunar surface analysis and hazard mapping. The integration of hyperspectral imaging and computer vision techniques offers significant advantages for space mission planning and execution.
Detailed implementation information is available in the project documentation:
Documentation Link