Image Dissolving in C# by asif


Basic Details of Image Dissolving:

Image dissolving is based on Alpha Blending. Lets have a look on Alpha Blending first.

Alpha blending is a convex combination of two colors allowing for transparency effects in computer graphics. The value of
alpha
in the color code ranges from 0.0 to 1.0, where 0.0 represents a fully transparent color, and 1.0 represents a fully opaque color.

The value of the resulting color when color Value1is drawn over a background of color Value0is given by:

Value = Image1(1.0 - alpha) + Image2(alpha)

The alpha component is used to blend to red, green and blue components equally, as in 32-bit RGBA, or, alternatively, there are three alpha values specified corresponding to each of the primary colors for spectral color filtering.

Alpha blending is the process of combining a translucent foreground color with a background color, thereby producing a new blended color. The degree of the foreground color’s translucency may range from completely transparent to completely opaque. If the foreground color is completely transparent, the blended color will be the background color. Conversely, if it is completely opaque, the blended color will be the foreground color. Of course, the translucency can range between these extremes, in which case the blended color is computed as a weighted average of the foreground and background colors. Fastgraph provides alpha blending functions that work on RGB color values, on direct color bitmaps, and on direct color virtual buffers.

  • In texturing, it will be used for blending color components

Where Alpha Blending is Used:Alpha blending can also be used for drop shadows, these are usually seen on menus and cursors.
Basic Algorithm Of Image Averaging:
Using alpha blending, one image was dissolved into another. Essentially, the value of each pixel in the resulting image is a weighted average of the pixels in the two originals. The weight (usually called alpha) varies over time. This technique was applied to each of red, green, and blue. Several output frames were generated with gradually increasing values of alpha. Here is how it works really:

for(double alpha=1.0;alpha>0.0;alpha-=(1.0/((double)(nSteps))))
{
byte* ptr1 = ( byte* )data1.Scan0;
byte* ptr2 = ( byte* )data2.Scan0;
byte* ptr3 = ( byte* )data3.Scan0;
for( int i = 0 ; i < height ; i ++ )
{
for( int j = 0 ; j < width * 3 ; j ++ )
{
ptr3[ 0 ] = ( byte )(alpha*ptr1[0]+(1-alpha)*ptr2[0]);

Guidelines for Use
To understand the working of the Image Averaging, take the example of the following images:

the Resultant Image Obtained by the Averaging of the above images is as:

Sample Project
Please Review other articles based on Logical Operators to get the better understanding of the project. The application seems to be in this GUI.

Results:

A smooth transition from the first image to the second is seen in the resultant image..

The project is a part of the series of the image processing articles written just for the prosperity and help for the students searching for Image Processing free stuff.

Attachments:

Project Files: Dissolving_Image_CSharp.zip

  • In RGBA texturing, the texture’s alpha value is sometimes used to specify blending
  • In texturing, sometimes the texture’s RGB color will be used as 3 alpha values to give spectral color filtering