Overview
The convolution tester
is an application I built to test different convolution kernels
on imagery. The program reads in a bitmap, JPEG, etc. and displays
the original image in the left window and the result of the convolution
in the right. The image windows are connected so that scrolling
in one causes the other to scroll appropriately. Sample screenshots
are below:

Image
Convolved with 9x9 Linear Falloff Point Spread Kernel

RGB
Image Convolved with 9x9 Point Spread Kernel (Displayed in HotCold
Colormap)

Image
Convolved with 3x3 Horizontal Sobel Edge Detector (Displayed in
Rainbow Colormap)

Image
Convolved with 1x1 Inversion Kernel
Kernel
Input Window
This image
shows a color bitmap read in as a grayscale and convolved with a
point spread function to blur the image. The inputs and controls
for the program are at the top. The top left window is a text parser
that converts user text into an array to use for the kernel. The
user inputs data delimited by spaces or commas and hits the Update
Kernel button and the convolution tester reads the text and converts
it into a double precision array. See below:

Kernel
Input Window
The Clear
Kernel resets the kernel to a 1x1 kernel with a value of 1. This
way if the kernel is convolved on an image, the original image is
returned. The final button in the Kernel Input window is Unitize
Kernel. This is used to convert the existing kernel to a kernel
with an overall weighting of 1. The pair of images below shows this.
The left image shows the original 3x3 kernel. This kernel has a
+2 weight. The right hand image shows the kernel after being unitized.
The entire kernel has been divided by it's total weighting to give
a total weighting of 1.
Left:
Original 3x3 Kernel. Right: Unitized 3x3 Kernel
Kernel
Preview Window
The kernel
preview window gives the user a graphical representation of the
kernel. The 9x9 kernel used in the original screenshot is shown
below. The left image shows the 9x9 kernel in a gray colormapping.
The lowest values are displayed in black while the highest values
in the kernel are shown in white. The right hand image shows the
same colormap, but displayed in the HotCold colormap.
Left:
9x9 Kernel in Grayscale Colormap. Right: Same Kernel Displayed
in Hot Cold Colormap
Kernel
Info and Control Windows
The kernel
info window gives the user the basic information about the kernel.
The topmost field is the height and width of the kernel. The second
field is the overall weighting of the kernel. The final fields on
the Kernel Info window are the value ranges of the colormap. This
gives the max and minimum values in the kernel.
To preserve
data ranges after a convolution this value should be equal to 1.
To get gradient data out of the convolution the weighting should
be close to or exactly 0. And if the weighting is less than 0 the
kernel is going to invert the coloring of the input image.
The controls
window allows the user to apply the convolution to the input image
or an already convolved image. The Apply Kernel button applies the
current kernel to the input image and displays the results in the
output window. The Re-Apply Kernel button applies the current kernel
to whatever is in the output window already. If the output image
is a convolved image, the Re-Apply Kernel button will apply the
convolution a second time to the output window. The final button,
Reset Image, sets the output image equal to the input.
Left:
Kernel Info Window. Right: Controls Window.
|