Hough space

image space
y = m0x + b0

Hough (parameter) space
b = -x0m + y0
b = -x1m + y1

polar representation for lines
d: perpendicular distance from line to origin
Θ: angle the perpendicular makes with the x-axis

Hough transform algorithm
xcosΘ- ysinΘ = d

Hough transform for circles
Circle: center(a,b) and radius r (xi-a)^2 + (yi-b)^2 = r^2

```For every edge pixel (x,y):
For each possible radius value r:
For each possible gradient direction Θ:
a = x - r cos(Θ)
b = y + r sin(Θ)
H[a,b,r] += 1
end
end
end
```

Recall 1D 2nd derivative of Gaussian

f、α^2/αx^2*h
Δ^2 = α^2f/αx^2 + α^2f/αy^2

Posted on Categories computer vision

Canny Edge Operator

1. smoothing derivatives to suppress noise and compute gradient.
2. threshold to find regions of “significant” gradient
3. thin to get localized edge pixels

The canny edge detector

```% for your eyes only

imshow(frizzy);
imshow(froomer);

frizzy_gray = rgb2gray(frizzy);
froomer_gray = rgb2gray(froomer);

frizzy_edges = edge(frizzy_gray, 'canny');
froomer_edges = edge(froomer_gray, 'canny');
imshow(frizzy_edges);
imshow(froomer_edges);

imshow(frizzy_edges & froomer_edges);
```
Posted on Categories computer vision

In the real world

f(x)
d/dx*f(x)

Finite differences responding to noise
Increasing noise

Solution: smooth first
f, h, h*f, α/αx*(h*f)
where is the edge?

```for sigma = 1:3:10
h = fspecial('gaussian', fsize, sigma);
out = imfilter(im, h);
imshow(out);
pause;
end
```

Differential operators – when applied to the image returns some derivatives.

For discrete data, we can approximate using finite differences.

```pkg load image;

function result = select_gdir(gmag, gdir, mag_min, angle_low, angle_high)
result = gmag >= mag_min
endfunction

imshow(img);

imshow((gy + 4) / 8);

imshow(gmag / (4 * sqrt(2)));

my_grad = select_gdir(gmag, gdir, 1, 30, 60);
```

Edges

Origin of Edges
-surface normal discontinuity
-depth discontinuity
-surface color discontinuity
-illumination discontinuity

Edges seem to occur “change boundaries” that are related to shape or illumination.
A stripe on a sign is not such a boundary.

Edge Detection
Basic idea: look for a neighborhood with strong signs of change.

Problems:
– neighborhood size
– how to detect change

intensity function (along horizontal scanline)

first derivative
-edges correspond to extrema of derivative

Template matching

Scene

Detected template
Correlation map

```pkg load image;

function [yIndex xIndex] = find_template_2D(template, img)

endfunction

imshow(tablet);
glyph = tablet(75:165, 150:185);
imshow(plyph);

[y x] = find_template_2D(glyph, tablet);
disp([y x]);
```
Posted on Categories computer vision

1D (nx)correlation

Signal
Filter
Normalized cross-correlation

Matlab cross-correlation doc
imshowpair(peppers, onion,’montage’)

Matlab cross-correlation doc
c = normxcorr2(onion,peppers);

```pkg load image;
function index = find_template_1D(t, s)

endfunction

s = [-1 0 0 1 1 1 0 -1 -1 0 1 0 0 -1];
t = [1 1 0];

disp('Signal:'), disp([1:size(s, 2); s]);
disp('Template:'), disp([1:size(t, 2); t]);

index = find_template_1D(t, s);
disp('Index:'), disp(index);
```
Posted on Categories computer vision

Median filter

10 15 20
23 90 27
33 31 30
sor-> 10 15 20 23 27 30 31 33 90
replace
10 15 20
23 27 27
33 31 30
Median filter is smooth nicer

```pkg load image;

imshow(img);

%% Add salt & pepper noise
noisy_img = imnoise(img, 'salt & pepper', 0.02);
imshow(noisy_img);

median_filtered = medfilt2(noisy_img);
imshow(median_filtered);
```

Linear Operation

division is a linear operation?
true becase (x + y)/z = x/z + y/z

Boundary Issues
full, same, valid

Boundary issues
methods:
clip filter(black):imfilter(f,g,0)
wrap around(f,g,’circular’)
copy edge(f,g,’replicate’)
reflect across edge(f,g,’symmetric’)

```pkg load image;