GEGL GSOC Application
This discussion is connected to the gimp-developer-list.gnome.org mailing list which is provided by the GIMP developers and not related to gimpusers.com.
This is a read-only list on gimpusers.com so this discussion thread is read-only, too.
GEGL GSOC Application | Sourav De | 26 Mar 16:32 |
GEGL GSOC Application | Sourav De | 27 Mar 23:01 |
GEGL GSOC Application | Mukund Sivaraman | 29 Mar 21:21 |
GEGL GSOC Application | Sourav De | 29 Mar 22:20 |
GEGL GSOC Application | Sourav De | 29 Mar 22:35 |
GEGL GSOC Application
Hi,
I am Sourav De, 3rd year undergraduate student of the department of Computer Science and Engineering at Indian Institute of Technology, Kharagpur. I'd like to participate in the GEGL implementation project for G'Soc 2012. I've applied for this last year too. I'm very interested in Image Processing and have done some project work on Artistic Rendition.
Please find the attached patch file for alien-filter I've experimented with and let me know if there is any mistake. Thanking you,
GEGL GSOC Application
Hi,
I am Sourav De, 3rd year undergraduate student of the department of Computer Science and Engineering at Indian Institute of Technology, Kharagpur. I'd like to participate in the GEGL implementation project for G'Soc 2012. I've applied for this last year too. I'm very interested in Computer Graphics, Image Processing and have done some project works on Artistic Rendition (basically on Image Segmentation, Object Detection, Stroke Orientation determination).
*
*
*Code Review and Algorithmic Description of GIMP Plug-ins (Cubism,
Fractal-trace, Plasma)*
*1. Cubism:-*
cubism Function:
a) fill the image with its background colour.
b) calculate number of tiles and randomize indices for each of them.
c) initializes the source image rectangle.
d) for each tile calculate its width, height, rotational angle randomly
using tile size and tile saturation values.
e) initialize a polygon for the corresponding tile and translate it to its
starting indices after rotating.
f) clamp the polygon into the original image frame and fill it with
corresponding source image colors.
fill_poly_color Function:
a) calculate distance between two points in the polygon, and define x & y
vectors.
b) get the extreme positions of it by polygon_extents.
c) compute minimum and maximum number of scanlines for it.
d) for every 2 points computes the extent of their corresponding scanline
segment.
d) assign color to each pixel by checking corresponding pixel value of the
source image.
*2. Fractal-trace:-*
pixels_init Function: a) allocate source and destination image rectangle, initialize the former row wise.
pixels_get_biliner Function:
a) return mean pixel value of 2*2 neighborhood.
pixels_store Function:
a) row wise store pixel values at the selection area.
mandelbrot Function:
a) iteratively calculate pixel coordinate.
filter Function:
a) for each pixel calculate its final position by mandelbrot function.
b) if the final position is inside the image assign corresponding pixel
value.
c) else depending upon the outside type assign pixel value.
*3. Plasma:-*
plasma Function: a) after initialization put seed pixels at each corner, at the center of each edge and at the center of the image. c) keep doing plasma operation by recurse through the image to go further depths as much as possible.
do_plasma Function:
a) calculate the medians for each depth.
b) if depth=-1, generate random colors and put them at the corners and
center of the image.
c) otherwise calculate average pixel value and for every pixel randomly
increase it using the turbulance value.
d) recursively go to higher depths.
*Code Review and Algorithmic Description of GEGL op Gaussian Blur:-*
iir_young_find_constants Function: a) prevent unexpected ringing at tile boundaries for different values of sigma parameter.
iir_young_blur_1D Function: a) blurify image by applying one-dimentional forward and backward filter.
iir_young_hor_blur Function: a) blurify image horizontally by applying iir_young_blur_1D filter horizontally.
iir_young_ver_blur Function: a) blurify image vertically by applying iir_young_blur_1D filter vertically.
fir_gen_convolve_matrix Function: a) compute matrix length for a given sigma. b) generate the convolution matrix and perform convolution.
fir_hor_blur Function: a) blurify padded(not vertically) image horizontally.
fir_ver_blur Function:
a) blurify padded(not horizontally) image vertically.
*Basic Algorithm:*
a) generate gaussian matrix for given sigma and median.
b) perform two way convolution with it.
Please find the attached patch file for alien-filter I've experimented with and let me know if there is any mistake in my code review or patch file. Thanking you,
GEGL GSOC Application
Hi Sourav
I think very highly of IIT students, so I'm sure you have what it takes to deliver if you had what it takes to get into IIT.
On Wed, Mar 28, 2012 at 04:31:27AM +0530, Sourav De wrote:
Please find the attached patch file for alien-filter I've experimented with and let me know if there is any mistake in my code review or patch file. Thanking you,
Did you manage to build the operation in GEGL? Did you test it? Do a review of the code you sent and tell me if it works.
Mukund
GEGL GSOC Application
Hi,
Thank you for your compliment. Please find the attached alien-map.c source code which I build using GEGL-0.1.8 version. I've tested it, and it's working fine with my GIMP-2.7.5 version. Please tell me if it doesn't work for you or if there is some mistake in my implementation.
Here goes my alien-map code review,
*alien-map code review*
a) for each pixel in the source image it checks for the red, green and blue
mode
b) for each mode if its turned on,
set the pixel value of the corresponding channel of the pixel in
destination image as,
destPixVal = sin((srcPixVal * frequency + angle / 180.0 ) * PI);
where frequency is the corresponding channel frequency,
and angle is the corresponding channel
phase shift angle
the original GIMP operation was
destPixVal = ROUND (127.5 * (1.0 + sin (((srcPixVal / 127.5 - 1.0) * frequency + angle / 180.0) * PI)));
where pixel values vary from 0 to 255, but using gfloat in GEGL these values can only vary between 0 to 1, so I changed the equation accordingly.
Thanking you in anticipation of response,
GEGL GSOC Application
Hi,
the destPixVal should be destPixVal = 0.5 + 0.5 * sin((srcPixVal * frequency + angle / 180.0 ) * PI);
to keep it's value between 0 to 1. Sorry for my mistake. Please find the attached alien-map.c source file.
Thanking you,