| import React from 'react'; | |
| import PanelContainer from '../ui/PanelContainer'; | |
| import GlowingBox from '../ui/GlowingBox'; | |
| import { Code, ImageIcon } from 'lucide-react'; | |
| const InputImagePanel: React.FC = () => { | |
| return ( | |
| <PanelContainer | |
| title="Input Image" | |
| description="The CNN process begins with a raw input image. For our example, we'll use a handwritten digit '5'. The image is represented as a matrix of pixel values." | |
| panelNumber={1} | |
| > | |
| <div className="flex flex-col md:flex-row gap-8 items-center justify-center"> | |
| <GlowingBox color="from-blue-500 to-cyan-500" className="flex-1"> | |
| <div className="relative" style={{height: '340px', aspectRatio: 1}}> | |
| <img | |
| src="https://i.pinimg.com/736x/9a/5b/c7/9a5bc759eb44df5554a902b210c89fa2.jpg" | |
| alt="Handwritten digit 5" | |
| className="w-full max-w-[300px] mx-auto rounded-lg border border-cyan-800/50" | |
| style={{height: '340px', width: '340px'}} | |
| /> | |
| <div className="absolute inset-0 grid grid-cols-8 grid-rows-8 pointer-events-none opacity-30"> | |
| {Array(64).fill(0).map((_, index) => ( | |
| <div key={index} className="border border-cyan-400/20"></div> | |
| ))} | |
| </div> | |
| <div className="absolute top-2 left-2 flex items-center gap-2 bg-gray-900/70 p-2 rounded-lg border border-gray-700"> | |
| <ImageIcon size={16} className="text-cyan-400" /> | |
| <span className="text-xs text-cyan-400">Raw Input Image</span> | |
| </div> | |
| </div> | |
| </GlowingBox> | |
| <div className="flex-1 flex flex-col gap-4"> | |
| <h3 className="text-xl font-semibold text-gray-100">Digital Representation</h3> | |
| <p className="text-gray-300 text-sm"> | |
| Computers see images as arrays of numbers. Each pixel is represented as a value between 0 (black) and 255 (white) for grayscale images. | |
| </p> | |
| <div className="mt-4 bg-gray-900 rounded-lg p-4 border border-gray-700"> | |
| <div className="flex items-center gap-2 mb-2"> | |
| <Code size={16} className="text-blue-400" /> | |
| <span className="text-xs text-blue-400">Matrix Representation</span> | |
| </div> | |
| <div className="text-xs font-mono text-gray-400 overflow-auto"> | |
| [<br /> | |
| [0, 0, 0, 0, 0, 0, 0, 0],<br /> | |
| [0, 0, 110, 190, 253, 70, 0, 0],<br /> | |
| [0, 0, 191, 40, 0, 191, 0, 0],<br /> | |
| [0, 0, 160, 0, 0, 120, 0, 0],<br /> | |
| [0, 0, 127, 195, 210, 20, 0, 0],<br /> | |
| [0, 0, 0, 0, 40, 173, 0, 0],<br /> | |
| [0, 0, 75, 60, 20, 230, 0, 0],<br /> | |
| [0, 0, 90, 230, 180, 35, 0, 0]<br /> | |
| ] | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </PanelContainer> | |
| ); | |
| }; | |
| export default InputImagePanel; |