Computer Vision

Homework 7  
Computer Vision, Spring 2024  
Due Date: April 26, 2024  
Total Points: 20  
This    homework    contains    two    programming    challenges.    All    submissions    are    due    at      
midnight    on    April    26,    2024,    and    should    be    submitted    according    to    the    instructions      
in    the    document    “Guidelines    for    Programming    Assignments.pdf”.      
runHw7.py will    be    your    main    interface    for    executing    and    testing    your    code.      
Parameters    for    the    different    programs    or    unit    tests    can    also    be    set    in    that    file.      
Before    submission,    make    sure    you    can    run    all    your    programs    with    the    command      
python runHw7.py with    no    errors.  
The    numpy package is    optimized    for    operations    involving    matrices    and      
vectors.    Avoid    using    loops    (e.g.,    for,    while)    whenever    possible—looping    can      
result    in    long    running    code.    Instead,    you    should    “vectorize”    loops    to    optimize      
your    code    for    performance.    In    many    cases,    vectorization    also    results    in    more      
compact    code    (fewer    lines    to    write!).  
Challenge    1: In    this    challenge    you    are    asked    to    develop    an    optical    flow    system.    You      
are    given    a    sequence    of    6    images    (flow1.png    – flow6.png)    of    a    dynamic    scene.    Your      
task    is    to    develop    an    algorithm    that    computers    optical    flow    estimates    at    each    image      
point    using    the  代 写 Computer Vision    5    pairs    (1&2,    2&3,    3&4,    4&5,    5&6)    of    consecutive    images.  
Optical    flow    estimates    can    be    computed    using    the    optical    flow    constraint    equation      
and    Lucas-Kanade    solution    presented    in    class.    For    smooth    motions,    this    algorithm      
should    produce    robust    flow    estimates.    However,    given    that    the    six    images    were      
taken    with    fairly    large    time    intervals    in    between    consecutive    images,    the    brightness      
and    temporal    derivatives    used    by    the    algorithm    are    expected    to    be    unreliable.      
Therefore,    you    are    advised    to    implement    a    different    (and    simpler)    optical    flow      
algorithm.    Given    two    consecutive    images    (say    1    and    2),    establish    correspondences      
between    points    in    the    two    images    using    template    matching.    For    each    image    point    in      
the    first    image,    take    a    small    window    (say    7x7)    around    the    point    and    use    it    as    the      
template    to    find    the    same    point    in    the    second    image.    While    searching    for    the      
corresponding    point    in    the    second    image,    you    can    confine    the    search    to    a    small      
window    around    the    pixel    in    the    second    image    that    has    the    same    coordinates    as    the      
2  
one    in    the    first    image.    The    center    of    the    7x7    image    window    in    the    second    image    that      
is    maximally    correlated    with    the    7x7    window    in    the    first    image    is    assumed    to    be    the      
corresponding    point.    The    vector    between    two    corresponding    points    is    the    optical      
flow    (u,v).  
Write    a    program    computeFlow that    computes    optical    flow    between    two    gray-level      
images,    and    produces    the    optical    flow    vector    field    as    a    “needle    map”    of    a    given      
resolution,    overlaid    on    the    first    of    the    two    images.      
result = computeFlow(img1, img2, win_radius, template_radius,  
grid_MN)  
You    need    to    choose    a    value    for    the    grid    spacing    that    gives    good    results    without      
taking    excessively    long    to    compute.    (6 points)  
For    debugging    purposes    use    the    test    case    in    debug1a.    In    this    synthetic    case,    the    flow      
field    consists    of    horizontal    vectors    of    the    same    magnitude    (translational    motion      
parallel    to    the    image    plane).    Note    that    in    the    real    case,    foreshortening    effects,      
occlusions,    and    reflectance    variations    (as    well    as    noise)    complicate    the    result.      
(2    point)  
Challenge    2: Your    task    is    to    develop    a    vision    system    that    tracks    the    location    of    an      
object    across    video    frames.    Object    tracking    is    a    challenging    problem    since    an      
object’s    appearance,    pose    and    scale    tend    to    change    as    time    progresses.    In    class    we      
have    discussed    three    popular    tracking    methods:    template-based tracking,      
histogram-based tracking    and    detection-based tracking.    In    this    challenge,    we    will      
assume    the    color    distribution    of    an    object    stays    relatively    constant    over    time.      
Therefore,    we    will    track    an    object    using    its    color    histogram.  
A    color    histogram    describes    the    color    distribution    of    a    color    image.    The    color      
histogram    that    you    will    need    to    compute    is    defined    as    follows.    Each    bin    of    the    color      
histogram    represents    a    range    of    colors,    and    the    number    of    votes    in    each    bin      
indicates    the    number    of    pixels    that    have    the    colors    within    the    corresponding    color      
range.      
Be    careful,    in    the    initialization    of    your    program,    you    should    generate    a    color    map      
from    the    region of    interest (ROI),    and    compute    all    subsequent    color    histograms      
based    on    the    same color    map.    It    is    only    meaningful    to    compare    two    histograms      
computed    based    on    the    same    color    map. Use    the    provided    function    chooseTarget  
to    drag    a    rectangle around    a    tracking    target.  
3  
Write    a    program    named    trackingTester that    estimates    the    location    of    an    object    in      
video    frames.      
trackingTester(data_params, tracking_params)  
trackingTester should    draw    a    box    around    the    target    in    each    video    frame,    and      
save    all    the    annotated    video    frames    as    PNGs    into    a    subfolder    given    in      
data_params.out_dir.      
After    generating    the    annotated    video    frames,    use    the    provided    function      
generateVideo to    create    a    video    file    containing    all    the    frames.  
(12    points)  
Include    all    the    code    you    have    written,    as    well    as    the    resulting    video    files,    but      
DO    NOT    include    the    three    tracking    datasets    and    the    individual    output    frames   in    your    submission  
WX:codinghelp

  • 25
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值