Regarding Our Project » History » Revision 69
Revision 68 (Satya Sai Abhiram OGGU , 01/18/2024 01:36 PM) → Revision 69/72 (Seongjoon BYEON , 01/18/2024 01:47 PM)
h1=. <pre> Our Project</pre> --- *[[Wiki]]* | *[[About Us]]* | *[[Regarding Our Project]]* | --- h2. *%{color:black}Overview%* Our project is responsible for delivering an end-product that creates a single span of an image that is made by overlapping images from two projects. The two component images have been processed using image processing techniques (which includes gamma correction, alpha blending, and modified intensity) to appropriate the look of the final image. Our team is divided into the project manager, leader, oxygen generator, and sub-teams dealing with wiki management, coding, commenting, and UML designing. We primarily focus on utilizing *%{color:blue}OpenCV%* for advanced image processing, supported by *%{color:green}Python%*. This project utilizes *%{color:purple}Unified Modeling Language (UML)%* for clear, structured design and Python for efficient coding, enhanced with OpenCV libraries for advanced image processing. Our code is thoroughly documented with Doxygen for clarity and maintenance, while project management and monitoring are streamlined using *%{color:red}Redmine%*. # Image Processing with *%{color:green}Python%* and *%{color:blue}OpenCV%*: We use *%{color:green}Python%*, a flexible programming language, together with *%{color:blue}OpenCV%*, a detailed library for image processing. This pair helps us effectively carry out complex image analysis and processing tasks. # Structured Design with UML: We utilize *%{color:purple}Unified Modeling Language (UML)%* to create a clear and organized design. *%{color:purple}UML%* helps in visually representing the system's architecture and workflows, making it more accessible and easier to understand. # Documentation with *Doxygen*: Our code is thoroughly documented using *Doxygen*. This approach ensures clarity and ease of maintenance, enhancing the long-term usability and adaptability of our project. # Project Management with *%{color:red}Redmine%*: For effective tracking and management, we use *%{color:red}Redmine%*. This tool aids in monitoring project progress, task management, and team collaboration, keeping our project well organized and on schedule. h2. *%{color:black}Image-Processing Technique%* Each component of the project, from image processing to project management, has been thoughtfully integrated to ensure optimal efficiency and usability. table{width: 100%}. |={width: 100%; background-color: orange;}.*Brief *Brief explanation of technology*| technology* h2=. !Project.jpg! Our project's goal is to create one large, distinct image on a flat screen by using two projectors. We use a flat screen and two laptops, and the projectors aim directly at the screen. To enhance the image quality, we apply techniques like alpha blending and gamma correction in our process. Assuming the screen size is 1280mm wide, the two projectors are positioned at a distance we call 'd', which is less than the width of the screen. To determine the size of the area where the images from both projectors overlap, we use the formula 'screen size - d = x'. This calculation helps us understand the relationship between the screen size, the distance between the projectors, and the size of the overlap area. *Gamma Correction Method*: It applies gamma correction to a corresponding image. Its correction is used to adjust the luminance of an image. This particularly useful in correcting the brightness of an image or adjusting its contrast. It is a nonlinear adaptation that is applied to each value of the pixel. In general, linear methods such as adding, subtracting, and multiplying are applied to all parts of pixels. Gamma correction is responsible for remodeling the saturation of the image by performing nonlinear methods on the input image's pixels. It is also necessary to maintain a stable gamma value, between too small or large. \text{gamma_corrected} = ( \text{image} / 255.0 )^\gamma \times 255 *Note*: gamma is the gamma value provided to the method. The original image (__image) is first normalized (divided by 255, as pixel values range from 0 to 255), then raised to the power of gamma, and finally rescaled back to the 0-255 range. |={width: 100%; background-color: orange;}. *The Process of Gamma Correction* | |\2. !gamma.jpg!| *Alpha Blending Method*: It is a technique used when computer graphics are laid on top of both layers and single or multiple objects contain some level of transparency portion. It ensures that the visible pixels of the graphic that are underneath a transparent area and their color or brightness are adjusted based on the transparency degree on the upper object. An alpha channel is a form of the mask that manages the amount of information to display from lower-lying graphics. It performs alpha blending on the edges of an image. It is a process of combining an image with a background, which is to create the appearance of transparency in a range of partial or full: typically used to blend two images. The method applies this blending in different way depending on the value of image_side: *If image_side is 1, ** blends the left edge of the image. *If image_side is 0, ** blends the right edge of the image. The blending is done by mixing two types of images: the gamma_corrected image and the current result_image using an alpha value (alpha) that varies along the mask width (__mask). This creates a significant change or transition between these images. |={width: 100%; background-color: orange;}. *The Process of Alpha Blending* | |\2. !alpha.jpg!| *Modify Intensity Method*: This method adjusts the intensity of the edges of an image. Like in alphaBlending, the operation varies depending on image_side: If image_side is 1, it reduces the intensity towards the left edge. If image_side is 0, it reduces the intensity towards the right edge. The intensity factor is calculated such that it decreases linearly towards the edge of the mask; This creates a fading effect on the edges of the image, where the edge gradually fades either into the background or into another image. h2. *%{color:black}IMAGES%* table{width: 100%}. |={width: 100%; background-color: #aaf;}. *Original Image* | |!ImageLeft0.png!|!ImageRight0.png!| |={width: 50%; background-color: #aaf;}. *Original Left Image* |={width: 50%;background-color: #aaf;}.*Original Right Image* | table{width: 100%}. |={width: 100%; background-color: #adff2f;}. *Final Image* | |!correctedleft.png!|!correctedright.png!| |={width: 50%; background-color: #adff2f;}. *Final Left Image* |={width: 50%;background-color: #adff2f;}.*Final Right Image* | |={width: 100%; background-color: #90ee90;}. *Objective Goal* | |\2. !Whole.jpg!| |={width: 100%; background-color: #90ee90;}. *Our Results* | |Once the programming team concluded the code, this was tested in the classroom. Two projectors that were provided were connected to two different laptops, each of them displaying one half of the image respectively. The results were up to standard and the results can be seen on the image below. These results can be used to prove the success of the code and thus the overall project. | |\2. !final_image_processed.png!|