Module for Video Processing, Aparratus and Method for Video Output

Senior Project


C++ OpenCV Pinned Published
1. Input
1. Input
2. ROI Projection
2. ROI Projection
3. Extracted Mask
3. Extracted Mask
4. Output
4. Output

I came up with an idea for my senior project based on my studies in the multimedia signal processing lab, and I thought it was a good idea, so I decided to apply for a patent. The idea is about protecting the presenter's eyesight from the beam of a projector. In summary, by connecting the camera in the direction of the projection area of the projector, separating the background and presenter from the input image, and protecting the eyesight by masking the presenter's area from the projected image.

System Overview
System Overview

Image Processing Unit uses the foreground detected from the camera input to mask the user input and output it through the beam projector. The important process is to identify the Region Of Interest (ROI), the area of the beam projector image in the camera input image, and correct distortion using perspective transformation. To detect the ROI, the system initiates a process of projecting an easily recognizable pattern from the beam projector and recognizing it from the camera at the start. The perspective transformation of a planar object in 3D space onto another 2D plane can be expressed as homography H . The formula for mapping a point ( x , y ) on one plane to a point ( x , y ) on another plane is as follows:

w ( x y 1 ) = ( a b c d e f g h 1 ) ( x y 1 ) = H ( x y 1 )

Since there are eight variables to be determined, knowing the four points on plane A that correspond to four points on plane B is sufficient to calculate H .

As this is my senior project, I implemented most of the functionalities (perspective transformation, corner detection, video streaming, Windows screen capture, and more) myself, except for the matrix class and image encoding/decoding functions in OpenCV.