GithubHelp home page GithubHelp logo

course_computervision's Introduction

Course_ComputerVision

電腦視覺(英文授課) Computer Vision, in NCTU

There are 3 homeworks(projects)

Environment

dependency:
python==3.6.13

matplotlib==3.3.4
numpy==1.19.5
open3d==0.15.1
opencv-python==4.5.5.62
scipy==1.5.4
tqdm==4.63.0

maybe that's all(?

HW1: Photometric Stereo

Introduction:

Given many image taken(rendered) from same viewpoint with different light directions(LightSource.txt).
Try to estimate the depth(height).

pic1 pic2 pic3 ...
...

Result:

Detail:

Use Diffuse reflection method to simulate the image color.
Calculate it backward to get the height.

$I_{diffuse} = consant * (n \cdot l)$
$n: \text{normal vector}$
$l: \text{light direction vector}$

  1. Estimate every normal vector in image[i, j].
    $l = norm(I_{diffuse} \times l_{inv})$
    $l_{inv}: inverse(l)$
  2. Estimate every Gradient vector in (x, y) directions in image[i, j]
    by normal vectors.
  3. Estimate the surface height by each Gradient vector.

HW2: Image Stitching

Introduction:

Stitching many images

pic1 pic2

Result:

Detail:

  1. Use SIFT to find features in two images.
  2. Find the most similar feature pairs $P(p_i, p_j)\ \forall\ p_i \in I_1$
    by kNN algorithm(k == 1), and Lowe's Ratio test
    where:
    $I_1: \text{image1}$
    $p_i: \text{the location of the features that SIFT find in }I_1$
    $\text{same as } p_j \text{ to } I_2$
  3. Find the best Homography Matrix that transform image 1 to image 2 viewpoints by RANSAC algorithm.
    RANSAC
    for try_many_times:
        locatoins_of_4_pairs = randomly_get_4_pair()
        matrix = calculate_homography(locatoins_of_4_pairs)
    
        fit_result = try_fit(matrix, location_of_every_image1_feature)
        score = count_matched(fit_result, location_of_paired_image2_feature, threshold)
    
        if score > max_score:
            best_matrix = matrix
    

Final Project: Depth Estimation from Stereo Images

Introduction:

Estimate the depth from two images which is taken by same camera, with same direction but different horizontal location.
But I also use image Rectification to rectify two images that have differenct camera locatoin or direction into same direction and horizental movement only.

Result:

just see: https://github.com/clashroyaleisgood/Course_ComputerVision/tree/main/Final_Project

Detail:

just see: https://github.com/clashroyaleisgood/Course_ComputerVision/tree/main/Final_Project

course_computervision's People

Contributors

clashroyaleisgood avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.