{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.12","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":45867,"databundleVersionId":6924515,"sourceType":"competition"},{"sourceId":7110608,"sourceType":"datasetVersion","datasetId":4099893}],"dockerImageVersionId":30587,"isInternetEnabled":false,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import cv2\nimport os\n\ndef enhance_image_quality(image_path, output_directory):\n    # Read the original image\n    original_image = cv2.imread(image_path)\n\n    # Convert the image to RGB\n    image_rgb = cv2.cvtColor(original_image, cv2.COLOR_BGR2RGB)\n\n    # Apply histogram equalization for each channel\n    equalized_channels = [cv2.equalizeHist(channel) for channel in cv2.split(image_rgb)]\n\n    # Merge the equalized channels back into an RGB image\n    equalized_image_rgb = cv2.merge(equalized_channels)\n\n    # Create the output directory if it doesn't exist\n    os.makedirs(output_directory, exist_ok=True)\n\n    # Extract the file name without the extension\n    file_name = os.path.splitext(os.path.basename(image_path))[0]\n\n    # Save the enhanced image in the labeled subdirectory\n    output_path = os.path.join(output_directory, f\"{file_name}_enhanced.jpg\")\n    cv2.imwrite(output_path, cv2.cvtColor(equalized_image_rgb, cv2.COLOR_RGB2BGR))\n\ndef enhance_images_in_directory(directory_path, output_parent_directory):\n    # List all files in the directory\n    image_files = [f for f in os.listdir(directory_path) if os.path.isfile(os.path.join(directory_path, f))]\n\n    # Extract the label from the directory path\n    label = os.path.basename(directory_path)\n\n    # Create the output directory for enhanced images\n    output_directory = os.path.join(output_parent_directory, \"enhanced_images\", label)\n    os.makedirs(output_directory, exist_ok=True)\n\n    # Enhance all images in the directory\n    for image_file in image_files:\n        image_path = os.path.join(directory_path, image_file)\n        enhance_image_quality(image_path, output_directory)\n\ndef enhance_images_in_all_directories(parent_directory, output_parent_directory):\n    # List all subdirectories in the parent directory\n    subdirectories = [d for d in os.listdir(parent_directory) if os.path.isdir(os.path.join(parent_directory, d))]\n\n    # Enhance all images in each subdirectory\n    for subdir in subdirectories:\n        directory_path = os.path.join(parent_directory, subdir)\n        enhance_images_in_directory(directory_path, output_parent_directory)\n\nif __name__ == \"__main__\":\n    parent_directory = \"/kaggle/input/filteredimages\"\n    output_parent_directory = \"/kaggle/working\"\n\n    # Enhance all images in all subdirectories and save to labeled subdirectories\n    enhance_images_in_all_directories(parent_directory, output_parent_directory)","metadata":{"execution":{"iopub.status.busy":"2023-12-03T15:30:24.986218Z","iopub.execute_input":"2023-12-03T15:30:24.987274Z","iopub.status.idle":"2023-12-03T15:30:38.389568Z","shell.execute_reply.started":"2023-12-03T15:30:24.987231Z","shell.execute_reply":"2023-12-03T15:30:38.388415Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import os\nfrom zipfile import ZipFile\n\n# Specify the directory to be zipped\ndirectory_to_zip = '/kaggle/working/enhanced_images'\n\n# Specify the name of the zip file\nzipfile_name = '/kaggle/working/enhanced_images.zip'\n\n# Create a ZipFile object in write mode\nwith ZipFile(zipfile_name, 'w') as zipf:\n    # Iterate through all files in the directory and add them to the zip file\n    for foldername, subfolders, filenames in os.walk(directory_to_zip):\n        for filename in filenames:\n            file_path = os.path.join(foldername, filename)\n            # Add the file to the zip file with its relative path\n            zipf.write(file_path, os.path.relpath(file_path, directory_to_zip))\n\nprint(f'Files in \"{directory_to_zip}\" have been zipped to \"{zipfile_name}\"')","metadata":{"execution":{"iopub.status.busy":"2023-12-03T15:30:38.391665Z","iopub.execute_input":"2023-12-03T15:30:38.392142Z","iopub.status.idle":"2023-12-03T15:30:38.707752Z","shell.execute_reply.started":"2023-12-03T15:30:38.392106Z","shell.execute_reply":"2023-12-03T15:30:38.706612Z"},"trusted":true},"execution_count":null,"outputs":[]}]}