| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="UTF-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <title>OCT Image Classifier</title> |
| <style> |
| body { |
| font-family: Arial, sans-serif; |
| font-size: 16px; |
| line-height: 1.6; |
| margin: 0; |
| padding: 0; |
| background-color: #f2f2f2; |
| color: #333; |
| display: flex; |
| flex-direction: column; |
| min-height: 100vh; |
| align-items: center; |
| } |
| header { |
| text-align: center; |
| padding: 20px; |
| background-color: #fff; |
| box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); |
| width: 100%; |
| } |
| .HEADER-image { |
| width: 100px; |
| height: auto; |
| margin-right: 15px; |
| cursor: pointer; |
| } |
| h1 { |
| font-weight: bold; |
| font-size: 24px; |
| margin-top: 0; |
| margin-bottom: 20px; |
| } |
| .container { |
| display: flex; |
| flex-direction: column; |
| align-items: center; |
| padding: 20px; |
| box-sizing: border-box; |
| max-width: 600px; |
| width: 100%; |
| margin: auto; |
| } |
| #octSelection { |
| padding: 12px; |
| font-size: 16px; |
| border: 1px solid #ccc; |
| border-radius: 6px; |
| margin-bottom: 20px; |
| width: 100%; |
| box-sizing: border-box; |
| } |
| #iframeContainer { |
| display: flex; |
| justify-content: center; |
| width: 100%; |
| overflow: hidden; |
| } |
| #octFrame { |
| width: 100%; |
| height: 750px; |
| border: none; |
| } |
| footer { |
| text-align: center; |
| background-color: #fff; |
| padding: 20px; |
| box-shadow: 0 -2px 4px rgba(0, 0, 0, 0.1); |
| width: 100%; |
| } |
| .modal { |
| display: none; |
| position: fixed; |
| z-index: 1; |
| left: 0; |
| top: 0; |
| width: 100%; |
| height: 100%; |
| overflow: auto; |
| background-color: rgb(0, 0, 0); |
| background-color: rgba(0, 0, 0, 0.4); |
| padding-top: 60px; |
| } |
| .modal-content { |
| background-color: #fefefe; |
| margin: 5% auto; |
| padding: 20px; |
| border: 1px solid #888; |
| width: 80%; |
| max-width: 600px; |
| border-radius: 10px; |
| } |
| .close { |
| color: #aaa; |
| float: right; |
| font-size: 28px; |
| font-weight: bold; |
| } |
| .close:hover, |
| .close:focus { |
| color: black; |
| text-decoration: none; |
| cursor: pointer; |
| } |
| |
| .instruction-image { |
| width: 85%; |
| height:30%; |
| margin-top: 10px; |
| } |
| |
| |
| @media only screen and (min-width: 600px) { |
| body { |
| font-size: 18px; |
| } |
| h1 { |
| font-size: 28px; |
| } |
| } |
| @media only screen and (min-width: 768px) { |
| .container { |
| max-width: 800px; |
| } |
| #octFrame { |
| height: 600px; |
| } |
| } |
| </style> |
| </head> |
| <body> |
| <header> |
| <a href="https://ameenmarashi-mretinaai.static.hf.space"> |
| <img src="MretinaAILogo.png" alt="Grayscale Example" class="HEADER-image"> |
| </a> |
| <h1>OCT Image Classifier</h1> |
| </header> |
|
|
|
|
| <div class="container"> |
| <label for="octSelection"> |
| Before using the OCT image classifier, you acknowledge that it is essential to seek professional opinions as the OCT image classifier can make mistakes. |
| To learn more, please read the <a href="#" onclick="openInstructions()">instructions</a>. |
| <br><br>Select Clinical Entity |
| </label> |
| <select id="octSelection" onchange="updateIframe()"> |
| <option value="https://ameenmarashi-diabeticoct.static.hf.space">Diabetic Retinopathy and Diabetic Macular Edema</option> |
| <option value="https://ameenmarashi-RetinalVascularOcclusion.static.hf.space">Retinal Vascular Occlusion</option> |
| <option value="https://ameenmarashi-amdoct1.static.hf.space">Age-related Macular Degeneration</option> |
| <option value="https://ameenmarashi-pachychoroid.static.hf.space">Pachychoroid (CSCR & PCV)</option> |
| <option value="https://ameenmarashi-vitreomacularinterfaceabnormalities.static.hf.space">Vitreomacular Interface Diseases</option> |
| <option value="https://ameenmarashi-hereditaryretinaldiseases.static.hf.space">Hereditary Retinal Diseases</option> |
| </select> |
|
|
| <div id="iframeContainer"> |
| <iframe id="octFrame" src="https://ameenmarashi-diabeticoct.static.hf.space" frameborder="0"></iframe> |
| </div> |
| </div> |
|
|
| <footer> |
| <p>© 2024 mRetina AI. All rights reserved. Created and designed by Ameen Marashi, M.D.</p> |
| </footer> |
|
|
| |
| <div id="instructionsModal" class="modal"> |
| <div class="modal-content"> |
| <span class="close" onclick="closeInstructions()">×</span> |
| <h2>Instructions</h2> |
| <p> |
| <b>System Requirements:<b><br> |
| - Stable & Fast internet connection<br> |
| - An OCT image file in a supported format (e.g., JPEG, PNG, GIF, BMP)<br> |
| - PDF, DOCx and other document file types are not supported <br> |
| |
| <b>Preparing Your OCT Image:<b><br> |
| - Ensure the OCT image is clear and well-centered.<br> |
| - Avoid images with excessive noise or artifacts.<br> |
| - The image should be a grayscale ONLY like the example below.<br> |
| <img src="N ok.jpg" alt="Grayscale Example" class="instruction-image"><br> |
| - Avoid these types of images (shown below): Macular Map, Pseudo-color, Inverted grayscale, and captured from computer screen<br><br> |
| |
| <img src="Map 1.jpg" alt="Grayscale Example" class="instruction-image"><br> |
| <img src="Map.jpg" alt="Grayscale Example" class="instruction-image"><br> |
| <img src="N-negative.jpg" alt="Grayscale Example" class="instruction-image"><br> |
| <img src="N-pseudocolor.jpg" alt="Grayscale Example" class="instruction-image"><br> |
| <img src="map tele.jpg" alt="Grayscale Example" class="instruction-image"><br> |
| <img src="report tele.jpg" alt="Grayscale Example" class="instruction-image"><br> |
| <img src="tele reppor.jpg" alt="Grayscale Example" class="instruction-image"><br> |
| <b>Using the Classifier:<b><br> |
| - Select the correct clinical entity.<br><br> |
| |
| <b>Uploading an Image:<b><br> |
| - Click on the designated area labeled "Drag and drop an OCT image file here, or click to select file."<br> |
| - Either drag your OCT image file into the area or click to open a file selector and choose the image from your device.<br> |
| - Once uploaded, the image will be displayed on the screen.<br><br> |
| |
| <b>Predicting the Condition:<b><br> |
| - Click the "Predict" button located below the displayed image; sometimes you need to re-upload the image if it doesn't appear.<br> |
| - A loading overlay with a spinner will appear, indicating that the model is processing the image.<br> |
| - Once the prediction is complete, the overlay will disappear, and the predicted condition will be displayed.<br><br> |
| |
| <b>The image classifier is capable of predicting only specific pathologies based on the OCT images uploaded:<b><br> |
| - The image classifier will not extract features from OCT images such as subretinal or intraretinal fluids. |
| - When diabetic retinopathy and macular edema are selected, the OCT image classifier can predict whether the uploaded image is Central DME, Non-central CSME, DME with Vitreomacular abnormalities, or Tractional Retinal Detachment.<br> |
| - If Retinal Vascular Occlusive diseases are selected, the OCT image classifier can predict whether the uploaded image is a Long-Standing Retinal Vascular Occlusion, Macular Edema Related to Retinal Vein Occlusion, or Retinal Artery Occlusion.<br> |
| - When AMD is selected for the OCT image classifier, it can predict whether the uploaded image is Non-neovascular AMD, Non-neovascular AMD with Geographic atrophy, or Active Neovascular AMD.<br> |
| - If Pachychoroid is selected, the OCT image classifier can predict whether the uploaded image is CSCR, CSCR complicated with MNV, or Polypoidal Choroidal Vasculopathy.<br> |
| - If Vitreo Macular Interface Abnormalities are selected, the OCT image classifier can predict whether the uploaded image is Lamellar Macular Hole, Vitreomacular traction, Full-thickness Macular Hole, or Epiretinal Membrane.<br> |
| - When Hereditary Retinal Diseases are selected, the OCT image classifier can predict whether the uploaded image is Retinitis Pigmentosa, Retinitis Pigmentosa with Macular Edema, X-linked Juvenile Retinoschisis, or Vitelliform Lesion.<br><br> |
| <b>Viewing Recommendations:<b><br> |
| - If the predicted condition is not "Normal" a "Suggest Recommendations" button will appear.<br> |
| - Click the "Suggest Recommendations" button to view treatment recommendations related to the predicted condition.<br> |
| - Read the displayed recommendations carefully, but be aware that incorrect predictions will result in wrong recommendations.<br> |
| - If desired, click the "Build your case with AI" button to use an AI case generator tool for further analysis.<br><br> |
| |
| <b>Troubleshooting and Tips:<b><br> |
| - No Prediction or Error: Ensure the image file is in a supported format, typed, and properly uploaded. Check your internet connection and try again.<br> |
| - Inaccurate Prediction: The classifier has a 70% accuracy rate with correct images. For example, if the patient presented with cystic lesions and no increased macular thickness, then AI may falsely produce a false prediction. Ensure the image quality is optimal. Consider consulting a specialist for a professional diagnosis and recommendations." Ensure the image quality is optimal. Consider consulting a specialist for a professional diagnosis and recommendations.<br> |
| - Button Not Appearing: If the "Suggest Recommendations" button does not appear, the condition might be predicted as "Normal," or there might be an issue with the prediction process. Try re-uploading the image or refreshing the page.<br><br> |
| |
| <b> Disclaimer:<b><br> |
| - This tool is intended for preliminary screening and educational purposes only.<br> |
| - It should not be used as a substitute for professional medical diagnosis or treatment.<br> |
| - Always consult with a qualified healthcare provider for any medical concerns or conditions. |
| </p> |
| </div> |
| </div> |
|
|
| <script> |
| function updateIframe() { |
| var selectElement = document.getElementById("octSelection"); |
| var selectedValue = selectElement.value; |
| var iframe = document.getElementById("octFrame"); |
| iframe.src = selectedValue; |
| } |
| |
| function openInstructions() { |
| document.getElementById('instructionsModal').style.display = 'block'; |
| } |
| |
| function closeInstructions() { |
| document.getElementById('instructionsModal').style.display = 'none'; |
| } |
| |
| |
| window.onclick = function(event) { |
| var modal = document.getElementById('instructionsModal'); |
| if (event.target == modal) { |
| modal.style.display = 'none'; |
| } |
| } |
| </script> |