首页
网站开发
桌面应用
管理软件
微信开发
App开发
嵌入式软件
工具软件
数据采集与分析
其他
首页
>
> 详细
CS 435代做、代写Matlab编程设计
项目预算:
开发周期:
发布时间:
要求地区:
CS 435 - Computational Photography
Final Project - Panoramic Stitching
YOU MAY WORK WITH A PARTNER IF YOU LIKE!!!
But if you do so, look at the additional information you need to provide in your submission
(stated at the end of the document).
Introduction
For our final assignment, we’ll attack the problem of creating a panoramic photo. This will require
several ideas from this course, including:
Least Squares Estimate (LSE) for Transformation Matrix Discovery
Projection
Blending
Interest Point Discovery (subsampling, gradients, edges)
Respresentation (feature extraction)
Feature Matching (point correspondences).
You may use functions that you were allowed to use in prior assignments. In particular things like
edge, imgradientxy, imgausfilt, etc.. However you may not use Matlab functions to do the new things
in this assignment. In particular, functions that might find keypoints and/or do transformations
(like imtransform, imregionalmask, imwarp, etc.. In additino, you cannot use anything from the
Computer Vision or Machine Learning toolboxes. This is not an exhaustive list, but hopefully you
get the idea. If in doubt, ask your instructor!
The Dataset
For the programming component of this assignment, take two pictures, one slightly offset from the
other (via rotation and/or translation). Make sure that the two images have significant overlap of
content.
1
Grading
Hard Coded Correspondences 10pts
Panoramic using hard-coded correspondences 30pts
Image Pyramids 10pts
Extrema Points 10pts
Keypoint Matching 10pts
Automatic Stitching 10pts
Success on Additional Tests 12pts
Report quality an ease of running code 8pts
TOTAL 100pts
Table 1: Grading Rubric
2
1 (10 points) Hard Coding Point Correspondences
Let’s start off by hard coding some point correspondences. Look at each image and choose four
point correspondences. Do not make this process interactive. Hard code the coordinates at the top
of your script.
Display the images side-by-side (as one image) with the point correspondences color coded as dots
in the image. An example can be found in Figure 1.
Figure 1: Manual Correspondences
3
2 (30 points) Compute Transformation Matrix, Project, and
Blend!
Next, use the four points you identified in the previous part to compute the transformation matrix
that maps one image to the other. You can determine which image you want to be the “base” image.
After determining the transformation matrix, we need to determine the dimensions of the new combined image. The height of this image should be the maximum of the base image’s height or the
maximum projected y value from the other image. The width will be equal to the maximum of the
base image’s width or the maximum projected x value from the other image.
Finally we need to populate our new image with pixel(s) from the base and projected images. To do
this, go through each location in your new image and grab the corresponding pixels from the base
and/or projected image (you’ll need to determine where, if anywhere, these come from). If both
images map to that location, you’ll want to blend them (using a technique of your choosing).
An example can be found in Figure 2.
Figure 2: Stitched images using manual correspondences
4
3 (10 points) Create Scale-Space Image Pyramids
Now on to the tough(er) stuff! We want to automate all this!
The first step is to automatically identify locations of interest. To do this we’ll find the stable local
maximas in scale-space for each image. And the first step of that is to create image pyramids!
Here are some hyperparameters we’ll use to create our image pyramids:
Find the extremas in grayscale.
Create five scales per octave.
The initial scale will have a standard deviation of σ0 = 1.6.
Each subsequent scale will have a σ value that is k =
√
2 times larger than the previous.
Each Gaussian kernel will have a width and height that is three times the filter’s σ value, i.e.
w = ⌈3σ⌉.
Create four octaves, each 1/4 of the size of the previous octave, obtained by subsampling ever
other row and column of the previous column (no interpolation).
In general, given octave n and scale m, you can compute σ as:
σ = 2n−1
k
m−1σ0
In your report show all the images for each octave for one of you images. Something similar to Figure
3.
5
Figure 3: Image Pyramid
6
4 (10 points) Finding the Local Maximas
Next, for each octave of each image, locate the local maxima, as discussed in class. These locations
then need to be in terms of the original image’s size (i.e. the first octave), which can be done by
multiplying their locations by 2n−1
, where again n is the current octave.
After identifying all the extrams, we want to remove the unstable ones, i.e. those that are edge pixels
and/or in areas of low contrast. To do this:
Find edge pixels use Matlab’s edge function. This will return a binary image (where a value of
one indicates that the pixel is an edge pixel). Use that (perhaps along with Matlab’s find and
setdiff functions) to eliminate extremas that are also edge pixels.
We will also eliminate extremas that are too close to the border of the image. You can determine
what “too close” means, but your choice will likely be related to your descriptor decision in
Part 5 (and how large of a region around they keypoints you’ll use to form the descriptors).
Finally, for each remaining extrema, compute the standard deviation of a patch around it. If
this standard deviation is less than some threshold, then the patch has low contrast and thus
should be eliminated from the extrema list. Once again, you can decide on the size of the patch
and the threshold based on experimentation.
For your report, provide two images for each input image. One with all the extremas superimposed
on it (indicated by red circles), and one after unstable extremas were removed. As an example, see
Figures 4-5.
Figure 4: All extrema points
7
Figure 5: Pruned extrema points
5 (10 points) Keypoint Description and Matching
For each remaining extrema/keypoint in each image, we’ll want to extract a descriptor and then
match the descriptors from one image to ones in the other. To compare keypoints, you will have to
determine what distance or similarity measurement to use. Common distance ones are Eucliden and
Manhattan. Common similarity ones are Cosine, Gaussian, and Histogram Intersection.
The following sections discuss strategies for describing keypoint regions (descriptor extraction) and
keypoint matching.
5.1 Descriptors
Given the constraints/assumptions of the problem, describing a patch around a keypoint using the
RGB values will likely work well (since it encodes both color and positional information). Thus,
if we had 9 × 9 region around a keypoint, we could describe that keypoint with a vector of size
9 × 9 × 3 = 243 values. However, feel free to experiment with other descriptors (SIFTs, Local
Histograms, Local GISTs, etc..).
5.2 Keypoint Correspondences
To find keypoint correspondences between images, we’ll make a few problem-specific assumptions:
Correspondences should have roughly the same y value.
The camera was rotated and/or translated right to obtain the second image.
Our general keypoint matching strategy will be:
1. For each keypoint in the first image, find the best match (using the distance or similarity
measurement of your choice) in the second image that satisfies the aforementioned constraints.
Call this set C1.
2. For each keypoint in the second image, find the best match (using the distance or similarity
measurement of your choice) in the first image that satisfies the aforementioned constraints.
Call this set C2.
3. Computer the set intersection of these two sets: C = C1 ∩ C2.
8
4. Remove from C all correspondences that have a distance above some threshold (or if you use
similarity, below some threshold).
For visualization (and your report), draw lines between a few matching keypoints, as seen in Figure
6.
Figure 6: Some Point Correspondences
9
6 (10 points) Find the Transformation Matrix via RANSAC
and Stitch
Finally we want to use the keypoint correspondences to compute a transformation matrix that we
can then use to auto-stitch our images.
However, as you may have noticed, many of the point correspondences might not be correct :(. So
instead we’ll use a RANSAC RANdom SAmpling Consensus strategy.
To perform RANSAC for our panoramic stitching:
1. For experiments 1 through N (you choose N)
(a) Select four correspondences at random.
(b) Compute the transformation matrix using these correspondences.
(c) Using the discovered transformation matrix, count how many point correspondences (among
all of them) would end up within a few pixels of one another after projection.
2. Keep the transformation matrix the resulting in the largest number of point correspondences
(among all of them) that ended up within a few pixels of one another after projection.
Now use this transformation matrix to stitch your images!
In your report:
Draw lines between the keypoint coorespondences used to computer your final transformation
matrix. See in Figure 7.
Your final stitched image.
10
Figure 7: Point Correspondences for final transformation matrix
7 (12 points) Additional Tests
For the remaining points we’ll test your code against three other picture pairs. You will get 0-4
points for each, depending on how well they stitched together.
11
Submission
NOTE: that 8 points of your grade is based on being able to run your code easily.
IN ADDITION: With your your submission, if you worked with someone else, let me know how
evenly the work was split. If each contributed evenly it would be 50/50. I will use this information
to adjust grades for pairs where one partner did more of the work.
For your submission, upload to Blackboard a single zip file containing:
1. PDF writeup that includes:
(a) Visualization for Part 1
(b) Stitched image for Part 2
(c) Visualization for Part 3
(d) Visualization for Part 4
(e) Visualization for Part 5
(f) Visualization and stitched image for Part 6
2. A README text file (not Word or PDF) that explains
Features of your program
Name of your entry-point script
Any useful instructions to run your script.
3. Your source files
12
软件开发、广告设计客服
QQ:99515681
邮箱:99515681@qq.com
工作时间:8:00-23:00
微信:codinghelp
热点项目
更多
代写dts207tc、sql编程语言代做
2024-12-25
cs209a代做、java程序设计代写
2024-12-25
cs305程序代做、代写python程序...
2024-12-25
代写csc1001、代做python设计程...
2024-12-24
代写practice test preparatio...
2024-12-24
代写bre2031 – environmental...
2024-12-24
代写ece5550: applied kalman ...
2024-12-24
代做conmgnt 7049 – measurem...
2024-12-24
代写ece3700j introduction to...
2024-12-24
代做adad9311 designing the e...
2024-12-24
代做comp5618 - applied cyber...
2024-12-24
代做ece5550: applied kalman ...
2024-12-24
代做cp1402 assignment - netw...
2024-12-24
热点标签
mktg2509
csci 2600
38170
lng302
csse3010
phas3226
77938
arch1162
engn4536/engn6536
acx5903
comp151101
phl245
cse12
comp9312
stat3016/6016
phas0038
comp2140
6qqmb312
xjco3011
rest0005
ematm0051
5qqmn219
lubs5062m
eee8155
cege0100
eap033
artd1109
mat246
etc3430
ecmm462
mis102
inft6800
ddes9903
comp6521
comp9517
comp3331/9331
comp4337
comp6008
comp9414
bu.231.790.81
man00150m
csb352h
math1041
eengm4100
isys1002
08
6057cem
mktg3504
mthm036
mtrx1701
mth3241
eeee3086
cmp-7038b
cmp-7000a
ints4010
econ2151
infs5710
fins5516
fin3309
fins5510
gsoe9340
math2007
math2036
soee5010
mark3088
infs3605
elec9714
comp2271
ma214
comp2211
infs3604
600426
sit254
acct3091
bbt405
msin0116
com107/com113
mark5826
sit120
comp9021
eco2101
eeen40700
cs253
ece3114
ecmm447
chns3000
math377
itd102
comp9444
comp(2041|9044)
econ0060
econ7230
mgt001371
ecs-323
cs6250
mgdi60012
mdia2012
comm221001
comm5000
ma1008
engl642
econ241
com333
math367
mis201
nbs-7041x
meek16104
econ2003
comm1190
mbas902
comp-1027
dpst1091
comp7315
eppd1033
m06
ee3025
msci231
bb113/bbs1063
fc709
comp3425
comp9417
econ42915
cb9101
math1102e
chme0017
fc307
mkt60104
5522usst
litr1-uc6201.200
ee1102
cosc2803
math39512
omp9727
int2067/int5051
bsb151
mgt253
fc021
babs2202
mis2002s
phya21
18-213
cege0012
mdia1002
math38032
mech5125
07
cisc102
mgx3110
cs240
11175
fin3020s
eco3420
ictten622
comp9727
cpt111
de114102d
mgm320h5s
bafi1019
math21112
efim20036
mn-3503
fins5568
110.807
bcpm000028
info6030
bma0092
bcpm0054
math20212
ce335
cs365
cenv6141
ftec5580
math2010
ec3450
comm1170
ecmt1010
csci-ua.0480-003
econ12-200
ib3960
ectb60h3f
cs247—assignment
tk3163
ics3u
ib3j80
comp20008
comp9334
eppd1063
acct2343
cct109
isys1055/3412
math350-real
math2014
eec180
stat141b
econ2101
msinm014/msing014/msing014b
fit2004
comp643
bu1002
cm2030
联系我们
- QQ: 9951568
© 2021
www.rj363.com
软件定制开发网!