Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
U
uva
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Taddeüs Kroes
uva
Commits
aa0dbb3f
Commit
aa0dbb3f
authored
13 years ago
by
Taddeüs Kroes
Browse files
Options
Downloads
Patches
Plain Diff
ImProc ass3: Added some debug lines.
parent
45ce1a1b
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
improc/ass3/back_projection.py
+35
-28
35 additions, 28 deletions
improc/ass3/back_projection.py
improc/ass3/intersect.py
+5
-2
5 additions, 2 deletions
improc/ass3/intersect.py
with
40 additions
and
30 deletions
improc/ass3/back_projection.py
+
35
−
28
View file @
aa0dbb3f
...
...
@@ -3,33 +3,30 @@ from numpy import zeros
from
matplotlib.pyplot
import
imread
,
imshow
,
show
from
intersect
import
col2bin
,
domainIterator
,
colHist
,
histogramIntersect
def
D
(
image
,
radius
,
x
,
y
):
"""
Get the average value of a circle around a pixel.
"""
disk_sum
=
0.
pixels
=
0
def
convolution
(
image
,
radius
):
"""
Calculate the convolution of an image with a specified circle radius.
"""
c
=
zeros
(
image
.
shape
)
r_sq
=
radius
**
2
w
,
h
=
image
.
shape
[:
2
]
# Loop to the square that surrounds the circle, and check if the pixel
# is inside the disk
for
dx
in
xrange
(
-
radius
,
radius
+
1
):
for
dy
in
xrange
(
-
radius
,
radius
+
1
):
cx
=
x
+
dx
cy
=
y
+
dy
if
cx
>=
0
and
cy
>=
0
and
cx
<
w
and
cy
<
h
\
and
dx
**
2
+
dy
**
2
<
r_sq
:
disk_sum
+=
image
[
cx
,
cy
]
pixels
+=
1
for
x
,
y
in
domainIterator
(
image
):
circle_sum
=
0.
pixels
=
0
return
disk_sum
/
pixels
if
pixels
else
0
for
dx
in
xrange
(
-
radius
,
radius
+
1
):
for
dy
in
xrange
(
-
radius
,
radius
+
1
):
cx
=
x
+
dx
cy
=
y
+
dy
def
convolution
(
image
,
radius
):
"""
Calculate the convolution of an image with a specified disk radius.
"""
c
=
zeros
(
image
.
shape
)
if
cx
>=
0
and
cy
>=
0
and
cx
<
w
and
cy
<
h
\
and
dx
**
2
+
dy
**
2
<
r_sq
:
circle_sum
+=
image
[
cx
,
cy
]
pixels
+=
1
for
x
,
y
in
domainIterator
(
image
)
:
c
[
x
,
y
]
=
D
(
image
,
radius
,
x
,
y
)
if
pixels
:
c
[
x
,
y
]
=
circle_sum
/
pixels
return
c
...
...
@@ -37,11 +34,11 @@ def hbp(image, environment, bins, model, radius):
"""
Create the histogram back projection of two images.
"""
# Create image histograms
print
'
Creating histograms...
'
M
=
colHist
(
image
,
bins
,
'
rgb
'
)
I
=
colHist
(
environment
,
bins
,
'
rgb
'
)
M
=
colHist
(
image
,
bins
,
model
)
I
=
colHist
(
environment
,
bins
,
model
)
# Create ratio histogram
R
=
zeros
(
I
.
shape
)
R
=
zeros
(
bins
)
for
c
in
domainIterator
(
R
,
3
):
if
(
I
[
c
]
!=
0
).
all
():
...
...
@@ -49,8 +46,8 @@ def hbp(image, environment, bins, model, radius):
# Create back projection
print
'
Creating back projection...
'
b
=
zeros
(
environment
.
shape
)
use
=
environment
*
bins
b
=
zeros
(
environment
.
shape
[:
2
]
)
use
=
environment
.
astype
(
float
)
*
bins
if
model
==
'
rgb
'
:
use
/=
255
...
...
@@ -63,9 +60,10 @@ def hbp(image, environment, bins, model, radius):
# Create convolution to create a peak value
print
'
Creating convolution...
'
return
convolution
(
b
,
radius
)
return
b
#return convolution(b, radius)
def
loc
(
x
,
y
):
def
loc
(
image
,
color
):
pass
def
find_image
(
image
,
environment
,
bins
,
model
,
radius
):
...
...
@@ -79,9 +77,18 @@ if __name__ == '__main__':
waldo
=
imread
(
'
waldo.tiff
'
)
env
=
imread
(
'
waldo_env.tiff
'
)
p
=
hbp
(
waldo
,
env
,
[
8
]
*
3
,
'
rgb
'
,
5
)
b
=
hbp
(
waldo
,
env
,
[
8
]
*
3
,
'
rgb
'
,
8
)
imshow
(
b
,
cmap
=
'
gray
'
,
origin
=
'
lower
'
)
show
()
import
sys
sys
.
exit
(
0
)
print
'
Mapping projection over original image...
'
result
=
env
.
copy
()
for
p
in
domainIterator
(
result
):
result
[
p
]
*=
b
[
p
]
print
'
done
'
imshow
(
p
,
cmap
=
'
gray
'
)
imshow
(
result
,
origin
=
'
lower
'
)
#imshow(b * env)
# Draw a rectangle around the found center pixel
#x, y = find_image(waldo, env, [8] * 3, 'rgb')
...
...
This diff is collapsed.
Click to expand it.
improc/ass3/intersect.py
+
5
−
2
View file @
aa0dbb3f
...
...
@@ -4,7 +4,8 @@ from matplotlib.pyplot import imread
def
col2bin
(
color
):
"""
Get the histogram bin coordinates of a color.
"""
return
tuple
(
map
(
lambda
x
:
round
(
x
-
1
),
color
))
#return tuple(map(lambda x: round(x - 1), color))
return
tuple
(
color
.
astype
(
int
)
-
1
)
def
domainIterator
(
image
,
dim
=
2
):
"""
Pixel iterator for arrays of with 2 or 3 dimensions.
"""
...
...
@@ -20,11 +21,13 @@ def domainIterator(image, dim=2):
def
colHist
(
image
,
bins
,
model
):
"""
Create the color histogram of an image.
"""
h
=
zeros
(
tuple
(
bins
)
)
h
=
zeros
(
bins
)
use
=
image
.
astype
(
float
)
*
bins
if
model
==
'
rgb
'
:
use
/=
255
elif
model
==
'
rgba
'
:
pass
elif
model
==
'
hsv
'
:
# TODO: implement HSV color model
pass
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment