2022-11-20

Image Stitching and Optical Flow Estimation

Introduction

This project, carried out by Dexuan Ren, focuses on the implementation of Optical Flow Estimation using the Lucas-Kanade method. The goal is to estimate the motion pattern between two consecutive frames or images.

Partial Codes

GUI
GUI
GUI
GUI
GUI
GUI
GUI

Methodology

Optical Flow Estimation

The Optical Flow Estimation was implemented using the following steps:

  1. Spatial Derivatives: A five-tap (central differences) derivative filter was used to compute spatial derivatives.
  2. Temporal Derivative: Gaussian filtering was applied to both images, and the first image was subtracted from the second.
  3. Eigenvalue Calculation: The flow estimate was considered valid only in regions where the 2×2 matrix was invertible, i.e., the smallest eigenvalue was greater than a threshold (e.g., τ = 0.01).
  4. Flow Visualization: The flow fields were visualized using the flowToColor function.

Window Size Effect

Different window sizes were experimented with, and it was observed that as the window size grows, fewer optical flows are detected.

Image Warping

A function named myWarp was implemented to warp one image with the computed optical flow field and compare the result with the other image. This helped in visualizing the accuracy of the computed flow field.

Results

The Optical Flow Estimation was tested on various image sequences, including ‘sphere’, ‘synth’, and ‘corridor’. The results were visualized using matplotlib, and the flow range was computed for each case.

  • Sphere Sequence: Max flow: 9.5293, Flow range: u = -6.000 .. 4.055; v = -5.403 .. 7.403
  • Synth Sequence: Max flow: 2.0551, Flow range: u = -1.891 .. 1.609; v = -1.798 .. 1.486
  • Corridor Sequence: Max flow: 433.8663, Flow range: u = -402.000 .. 328.000; v = -358.000 .. 412.000

Conclusion

The project successfully implemented Optical Flow Estimation using the Lucas-Kanade method. The effect of window size on the result was explored, and the accuracy of the computed flow field was visualized through image warping.

References

2022-10-16

Campus Map App Design

Interactive Campus Map

An innovative application designed to assist campus users in finding locations like buildings, classrooms, parking places, and more. The map is interactive, up-to-date, and offers detailed information beyond static maps or Google Maps.

Components

  • Home Page: Default map centers at campus geological center with options to recenter based on GPS location and switch to satellite view.
  • Search Functionality: Allows users to search for locations with detailed results, including address and route from current GPS location.
  • Location Pages: Includes “My Locations” and detailed location pages with address, description, and photos.
  • Building Plans: Multileveled plans with room numbers, north direction, and interactive features like zoom and rotate.
  • Course Page: Allows users to search and view courses by catalog number and location.
  • Parking Page: Displays available parking slots, rates, and pass counts.
  • Profile Page: Includes options to sync timetable, add parking credit, and change password.

Prototype

An interactive prototype of this project is available on Google Drive.

Feel free to explore and get inspired!

GUI
GUI

2022-09-20

Indoor Golf Automation

Implemented the Automation on Site for two stores, Using REST API to sync with cloud.
All devices will be auto on or off depending on the user’s Booking, also support remote control.
Store will automaticly close and open in midnight and morning.
Supported Device including, PC, lights, sensors, Survilance cameras, Montion IR cameras.

Source code is an IP to Mr.Leaves Electronics and Networking Inc. thus its not shown here.

Click this to Learn More about the store: ClubHouse Golf

GUI
GUI

2022-07-11

Game Server Rental and Egg Development

Introduction

We have integrated the Pterodactyl panel for these new nodes, a move that streamlines management and operations while enhancing automation capabilities.
I also participates in the egg (Docker image and Installation scripts) developement of Pterodactyl in the major open source repositories.

My Github Page.

Technical Design

Architecture:

  • Distributed System: The nodes are part of a distributed system that ensures high availability and fault tolerance.
  • Microservices: The system is built using a microservices architecture, allowing for scalability and ease of maintenance.

Many Nodes

Containerization with Docker:

  • Isolation: Docker containers encapsulate each game server, ensuring isolation and consistent environments.
  • Docker Compose: Used for defining and running multi-container Docker applications, simplifying deployment.

Pterodactyl Panel:

  • Integration: The panel is integrated with the Docker ecosystem, providing a unified interface for managing game servers.
  • Customization: Allows for extensive customization of server settings and configurations.

Demo Servers

Security:

  • MFA: Multi-Factor Authentication (MFA) using the Google Authenticator app enhances security.
  • Firewalls & Network Isolation: Implementation of firewalls and network segmentation to protect sensitive data.

Automation & Monitoring:

  • CI/CD Pipeline: Continuous Integration and Continuous Deployment (CI/CD) pipeline for automated testing and deployment.
  • Monitoring Tools: Integration with monitoring tools like Prometheus and Grafana for real-time insights.

Deployment Strategy

Environment Setup:

  • Development, Staging, and Production Environments: Ensuring a smooth transition from development to production.

Scalability:

  • Horizontal Scaling: Ability to add or remove nodes based on demand, ensuring optimal resource utilization.

Backup & Recovery:

  • Regular Backups: Scheduled backups of critical data.
  • Disaster Recovery Plan: A robust plan to ensure data integrity and availability in case of failure.

Accessing the New Panel

The new panel can be accessed at Mr.Leaves Server Group.

GUI

Conclusion

The technical design and deployment strategy of our game server hosting system reflect our commitment to excellence. By leveraging cutting-edge technologies and best practices, we provide a robust, scalable, and secure solution that meets the needs of demanding users. Explore the new panel and experience the benefits of our advanced hosting solution.

2022-02-19

Simple C program shows How Float is stored

This is a simple code to demonstrate how a double is stored in computer memory.

To understand the concept, please read the details in the API Floating Point Data Types link.

Click Here to view the source code.

Example Output:

[root@localhost ~]# gcc ShowDoubleConversion.c -lm
[root@localhost ~]# ./a.out

Please enter a double number: 7464.1648

Double: 7464.164800
RawDouble: 40BD282A30553261

Dec Form:
*****************
Sign: 0
Exponent: 1035
Fraction: 3703336361865825

Hex Form:
*****************
Sign: 0
Exponent: 40B
Fraction: D282A30553261

Conversion:
*****************
Sign: Positive
Exponent: 12
Binary Fraction: 1101001010000010101000110000010101010011001001100001
Decimal Fraction: 1.822306
Raw Double in Decimal Calculation: 7464.164800=1x1.822306x2^12

Double Check Answer: 7464.164800
[root@localhost ~]#

Get In Touch

Feel free to reach out to me with any questions, feedback, or collaboration opportunities. I would love to hear from you!

  • Address

    Willowdale, Toronto
    Ontario, M2M 4H9
    Canada
  • Phone

    647-355-0239
  • Email

    ken.ren98@gmail.com