Alex Storer
5/6/04
Part A.
Original Image Applying Edgegray Template
Applying Dilation Template Applying Threshold Template
Analysis
This series of templates did not seem to do a particularly good job in extracting the ravine-like features of the image. The long lines here are not well distinguished from the remainder of the image, which and they are really not much more pronounced than they initially were.
As a note, it seems that the edgegray template did not function the way it was intended, because its output was not grayscale in the steady state. Reducing tau from 5 (which is shown) to 1 yields the following string of outputs:
Original Image Applying Edgegray Template
Applying Dilation Template Applying Threshold Template
In the end, this seems to have done little to effect the final result. Regardless of the performance of this edgegray template, however, it appears that the inputs are set correctly for these templates, as the dilation and thresholding occurs as one would expect.
On the whole, this is not a satisfactory scheme to detect ravines.
If, however, we change the initial state of the edgegray template to arbitrary, and do not let it reach steady state, using tau around 1, we get the following:
Original Image Applying Edgegray Template
Applying Dilation Template Applying Threshold Template
This is actually a much more useful ravine detector, as it isolates the long lines from the remainder of the image. Of course, this requires some tweaking of the edgegray template, by not letting it reach (or approach) steady state, but the initial state of a picture is not an unreasonable thing to have on the CNN. After this, the dilation and threshold templates work perfectly off the bat, that is, they do take in the correct input.
Part B.
(a)
Original Averaged
Because I often have difficulty translating the template file into A/B/Z notation, here is the file:
NEIGHBORHOOD: 1
FEEDBACK:
0 0 0
0 0 0
0 0 0
CURRENT: 0
CONTROL:
0.11111 0.11111 0.11111
0.11111 0.11111 0.11111
0.11111 0.11111 0.11111
The logic of this template is that each neighboring cell will contribute equally to the final value of the cell. Ideally, I would include 1/9, which approximates to 0.111…, but rounding it off appears to have little effect.
A is the feedback, B is the control and Z is the current.
Average Template:
0
0
0
A
0
0
0
0
0
0
B
0.11111 0.11111 0.11111
0.11111 0.11111 0.11111
0.11111 0.11111 0.11111
Z
0
Network Settings
Input
Initial State
Boundary Condition
Picture
Arbitrary
Zero-flux
Running Time (tau CNN) 10 (this is more than adequate)
This template smooths the image, losing fine detail. Thus, high-frequencies are lost and low frequencies maintained – a lowpass filter.
(b)
The Laplacian is generally used to extract fine detail from images – a high pass filter.
One way to smooth the image, would be to subtract out these details, essentially subtracting the Laplacian from the original image.
Original Laplacian Averaged
Average Template:
0
-1
0
A
-1
3
-1
0
-1
0
0
0
0
B
0
0
0
Input
Initial State
Boundary Condition
Running Time (tau CNN)
Network Settings
0
0
0
(c)
Averaged
Undefined
Picture
Zero-flux
1
Binary Edge Detected
Z
0
Here, we are able to create a template that only preserves fairly pronounced structures.
FEEDBACK:
0 0 0
0 2 0
0 0 0
CURRENT: -0.1
CONTROL:
-1.0 -1.0 -1.0
-1.0 8.0 -1.0
-1.0 -1.0 -1.0
Edge Template:
0
0
0
A
0
2
0
0
0
0
-1
-1
-1
B
-1
8
-1
-1
-1
-1
Z
-0.1
Network Settings
Input
Initial State
Boundary Condition
Picture
Arbitrary
Zero-flux
Running Time (tau CNN) 10
(d)
After a bit of experimentation, it seems as though one simple erosion takes care of a fair amount of noise reduction as follows:
Binary Edge Detected Eroded
Edge Template:
A
0
0
0
0
0
0
0
0
0
0
0
0
B
1
1
0
Input
Initial State
Boundary Condition
Running Time (tau CNN)
Then, we remove solitary pixels.
Eroded
Network Settings
0
1
1
Picture
Arbitrary
Zero-flux
2
De-pixeled
Z
-3
0
0
0
A
0
1
0
0
0
0
1
1
1
B
1
8
1
Input
Initial State
Boundary Condition
Running Time (tau CNN)
Network Settings
1
1
1
Picture
Arbitrary
Zero-flux
2
Z
-1
Now we must find a way to reconnect these lines which are weak. Using the Figure
Reconstructor template, we can do this. Set the Depixeled image as the initial state, and the raw edge-detected image as the input, and you can get the following:
De-pixeled Reconstructed
0.5
0.5
0.5
A
0.5
4.0
0.5
0.5
0.5
0.5
0
0
0
B
0
4
0
0
0
0
Input
Initial State
Boundary Condition
Running Time (tau CNN)
Network Settings
Edge Detected Image
De-Pixeled Image
Fixed-Value: 0
5
Z
3
So this entire process goes from:
Original Reconstructed
And this is the process that we will use for our algorithm.
Laplacian Lowpass
Input: ~
Initial State: Mars image
Time: 1 tau
Edge Detection
Input: Laplacian Output
Initial State: ~
Time: 10 tau
Erosion
Input: Edge detection output
Initial State: ~
Time: 2 tau
Pixel Deletion
Input: Erosion output
Initial State: ~
Time: 2 tau
Figure Reconstruction
Input: EdgeDetection output
Initial State: DePixel output
Time: 5 tau
Total time = 1+10+2+2+5 = 20 tau
20 tau = 2000 ns = 2 us