6433a59
* rgb.c: implement pipi_red(), pipi_green() and pipi_blue() to extract separate channels. by
2008-08-23 09:11:15 +0000
e38943a
* rgb.c: implement pipi_rgb(), to combine three RGB channels. by
2008-08-23 09:11:10 +0000
10baf86
* pipi.c: implement --roll, RPL-style. by
2008-08-23 09:11:06 +0000
b40fc1b
* atkinson.c: implement Atkinson dithering. by
2008-08-23 09:11:00 +0000
36fb60c
* transform.c: implement pipi_rotate90, pipi_rotate180 and pipi_rotate270. by
2008-08-21 00:10:22 +0000
2da45f9
* Implement pipi_vflip() and pipi_hflip(). by
2008-08-21 00:10:16 +0000
412dafd
* median.c: oops, removed old debugging hack from pipi_median(). by
2008-08-20 22:07:19 +0000
0cab178
* color.c: implement pipi_threshold(). by
2008-08-20 22:00:23 +0000
31fec9b
* Add pipi_dilate() / pipi_erode() and --dilate / --erode. by
2008-08-20 22:00:17 +0000
114afed
* median.c: fix the RGBA median filter. by
2008-08-20 22:00:12 +0000
d9f3b65
* median.c: add a median filter. Highly unoptimised for now. by
2008-08-20 22:00:06 +0000
a1ad690
* blur.c: proper box blur implementation that runs linearly with pixel count. by
2008-08-20 22:00:01 +0000
ab1487e
* Add --boxblur to the pipi command line. by
2008-08-20 21:59:55 +0000
8e5b11a
* convolution_template.h: disambiguate parentheses. by
2008-08-20 21:59:51 +0000
db43a4d
* img2rubik.c: add quick and dirty dithering code to img2rubik. by
2008-08-20 01:38:51 +0000
8996a53
* blur.c: improve the Gaussian kernel interpolation. by
2008-08-20 01:38:46 +0000
baa3d82
* Move the palette reduction algorithm into pipi_reduce(). by
2008-08-20 01:38:39 +0000
f6e201c
* img2rubik.c: improve stability by clipping t. by
2008-08-16 13:16:19 +0000
585af30
* img2rubik.c: fix convex hull build, some points were not properly excluded. by
2008-08-16 13:16:13 +0000
b9ccaad
* img2rubik.c: + fix RGB-space UV projection. + free allocated memory at the end. + clean up the debug messages and make them optional. by
2008-08-16 12:23:28 +0000
0151c72
* More img2rubik experimentation, with a lot of debugging messages. by
2008-08-16 00:54:16 +0000
e23268c
* img2rubik.c: factor out the hull generation so that we can also build a convex hull of the Neugebauer primaries. by
2008-08-16 00:54:11 +0000
89ae481
* More color reduction work: we can now constraint an image's palette to the convex hull of a given palette, except it currently first converts the image to grayscale. by
2008-08-16 00:54:07 +0000
f6f7cbc
* pixels.c: fix uninitialised w and h in pipi_getpixels. by
2008-08-16 00:54:03 +0000
9ba0524
* stock.c: the random stock image now creates RGB noise. by
2008-08-16 00:53:59 +0000
13bbfb8
* Start working on colour reduction with a constrained palette. by
2008-08-16 00:53:54 +0000
e50ce5c
* color.c: implement pipi_brightness() and pipi_contrast(). * pipi.c: add --brightness and --contrast. by
2008-08-16 00:53:50 +0000
43e5e3a
* Add a NOTES file for random notes. by
2008-08-16 00:53:42 +0000
22b3af0
* Added string.h to list of included files, for memcpy() by
2008-08-15 11:11:12 +0000
7c5ed98
* Removed pipi/fill directory (I thought I had done this before. Hurra Pastis.) by
2008-08-15 10:34:24 +0000
37ab68e
* blur.c: improve the Gaussian kernel generation by interpolating its values in a quincunx pattern. by
2008-08-14 18:35:07 +0000
18e1cc4
* Add pipi_invert() to invert an image's colours. by
2008-08-14 18:35:01 +0000
48b881b
* Add pipi_tile, to create image mosaics. by
2008-08-14 18:34:57 +0000
edd4a03
* Add the --scale flag. Resizes the image like --geometry, except with relative parameters. by
2008-08-14 18:34:51 +0000
9793052
* blur.c: add an argument to the gaussian convolution to specify an angle. Of course since the kernel is no longer separable, it becomes awfully slow with large images. Here is a tileable brushed metal texture: # pipi pipi:random512x512 --wrap --blur 20x0r25 -o image.png by
2008-08-14 18:34:44 +0000
3bcf099
* Allow pipi --blur to specify both the X and Y Gaussian sizes. Now we can create some nice, tileable brushed metal textures: pipi pipi:random15x15 --geometry 512x512 --wrap --blur 40 \ pipi:random512x512 --wrap --blur 10x0 --autocontrast --wrap \ --blur 20x0 --multiply -o image.png by
2008-08-13 20:26:38 +0000
555ba32
* pipi.c: add the --geometry flag (only wxh for now). by
2008-08-13 20:26:33 +0000
b74fad4
* Implement difference, multiply, divide, screen and overlay blend methods. by
2008-08-13 20:26:28 +0000
1e47505
* convolution.c: move local function prototypes to convolution_template.h. by
2008-08-13 20:26:22 +0000
b089bc1
* context.c: add the "swap" command to swap two images in the stack. by
2008-08-13 20:26:18 +0000
da84205
* subadd.c: add pipi_sub() and pipi_add() as another way to combine two images. by
2008-08-13 20:26:11 +0000
a5cecea
* stock.c: allow arbitrary sizes for the bayer stock image, even if they give shitty results when used for ordered dithering. by
2008-08-12 17:18:34 +0000
6fb5354
* minmax.c: add pipi_min() and pipi_max() as another way to combine two images. by
2008-08-12 17:18:30 +0000
9bd6b55
* mean.c: implement pipi_mean() to compute a mean image. by
2008-08-12 17:18:25 +0000
31fd250
* Support --autocontrast in pipi. by
2008-08-12 17:18:17 +0000
7f3e08d
* convolution.c: support for wrap-around in convolutions. * pipi.c: add the "--wrap" flag to tell libpipi that a given image wraps around. by
2008-08-11 22:57:21 +0000
103e062
* pipi.c: implement the "--gray" flag for grayscale conversion. by
2008-08-11 22:02:13 +0000
ec187df
* convolution_template.h: split convolution routines into separate functions for each pixel format. by
2008-08-11 22:02:08 +0000
25cdf35
* jajuni.c: add Jarvis-Judice-Ninke dithering. It's a Floyd-Steinberg-like error diffusion method that has fewer high resolution structural artifacts at the expense of resolution. by
2008-08-11 20:02:34 +0000
b550098
* floydsteinberg.c: minor optimisation in the FStein error propagation. by
2008-08-11 20:02:29 +0000
b658564
* context.c: fix an old bug that was incorrectly rounding down blur values. by
2008-08-11 20:02:25 +0000
ee6e43c
* stock.c: generate images with random noise. by
2008-08-11 20:02:20 +0000
eb9a270
* pipi_dither_ordered() now takes two arguments; any image can be used as the ordered dithering matrix. To get the old behaviour, use: pipi image.png pipi:bayer8 --dither ordered out.png by
2008-08-11 20:02:16 +0000
3014994
* codec.c: support for stock images in pipi_load(). * stock.c: start working on stock image generation; for instance: pipi pipi:bayer64 -o image.png will generate a 64x64 Bayer dithering pattern and save it to image.png. by
2008-08-11 20:02:10 +0000
d6b8cca
* context.c: implement various dithering commands and Gaussian blur. * pipi.c: add "--blur" and "--dither" commandline options. * blur.c dither.c: remove these examples, pipi.c works a lot better: pipi src.png --blur 10 dest.png pipi src.png --dither dbs dest.png (and of course combinations are possible) by
2008-08-11 00:51:05 +0000
0549f43
* Start working on "pipi", a command-line libpipi tool. It will be similar to convert, display, mogrify, animate etc. It can already convert between image formats (eg. "pipi src.png -o dest.jpeg"). by
2008-08-11 00:51:01 +0000
0f3943d
* Add functions that handle a stack-based processing queue. by
2008-08-11 00:50:55 +0000
1ff729f
* convolution.c: fix a small memory leak in the convolution filter. by
2008-08-10 15:16:47 +0000
77ec441
* blur.c: implement box blur; currently runs in O(n) but we could make it O(1) trivially. by
2008-08-08 18:11:24 +0000
b7c2d1f
* autocontrast.c: simple autocontrast filter; does not work very well. by
2008-08-08 18:11:17 +0000
c269c21
* Get rid of test.c, it was no longer useful anyway. by
2008-08-08 18:11:12 +0000
baa61a9
* Handle alpha layer in floodfill (but don't make it conditionnal to the algorithm) by
2008-08-08 18:07:10 +0000
290e151
* First shot of a floodfiller (both u32 and float, 4 neighbours) by
2008-08-07 15:21:17 +0000
5326865
* dbs.c: generate the initial halftone using random dithering instead of Floyd-Steinberg in order to avoid the energy level getting locally stuck around error diffusion structure artifacts. by
2008-08-04 21:50:02 +0000
0eda956
* random.c: implement random dithering using a deterministic pseudo-RNG. by
2008-08-04 21:49:57 +0000
18dd51e
* Dithering algorithms no longer modify the original image. by
2008-08-04 17:23:59 +0000
2dc8bb3
* pipi.c: fix a memory leak caused by empty picture having codec_format set to zero (and clashing with a real image format). by
2008-08-04 17:23:55 +0000
66f9ce5
* pipi.c: implement pipi_copy(). by
2008-08-04 17:23:51 +0000
a17c675
* pixels.c: store byte length and bits-per-pixel value in the pipi_pixels_t structure. by
2008-08-04 17:23:47 +0000
41efcde
* Prefix dithering functions with _dither_ to avoid namespace cluttering. by
2008-08-04 17:23:44 +0000
6a33096
* ordered.c: implement Bayer dithering (pretty trivial). by
2008-08-04 17:23:38 +0000
a6dcd80
* dbs.c: optimise DBS by ignoring 16x16 cells that had no pixel changes for the last two iterations. by
2008-08-03 18:36:26 +0000
2a3c7ca
* dbs.c: improve the DBS human visual system kernel by adding two Gaussian kernels. by
2008-08-03 18:36:17 +0000
bf31390
* sharpen.c: add a sharpen filter example, using our generic convolution routine. Note that it is not the "real" sharpen which should be built on top of a gaussian kernel. by
2008-08-03 16:03:46 +0000
8c4591f
* blur.c: remove the blurring code and use our generic convolution routine, which correctly recognises the Gaussian kernel as a separable filter. As a result, it is now 50% faster because the normalisation occurs at kernel build time. by
2008-08-03 15:54:56 +0000
03ca8dc
* convolution.c: automatically detect when a convolution filter is separable and switch algorithms to speed up processing. by
2008-08-03 15:54:48 +0000
c587c29
* blur.c: fix the blur example’s argument checking. by
2008-08-03 15:54:42 +0000
89f35cb
* convolution.c: generic convolution method. Does not take advantage of separable kernels yet. by
2008-08-03 15:54:20 +0000
870828b
* edd.c: output MSD instead of RMSD in the displacement computation. by
2008-08-03 11:48:16 +0000
87f8e92
* Error diffusion methods now support either raster or serpentine scan. by
2008-08-03 11:48:07 +0000
99d8af7
* pixels.c: support more conversion combinations. by
2008-08-03 11:47:11 +0000
302ce37
* ostromoukhov.c: Ostromoukhov's simple error diffusion algorithm. by
2008-08-03 03:31:20 +0000
2182fdf
* floydsteinberg.c: perform Floyd-Steinberg dithering on a serpentine path. by
2008-08-03 03:30:53 +0000
3e575ba
* dither.c: add an example program for dithering methods. by
2008-08-03 02:17:46 +0000
628c261
* dbs.c: new dithering function: Direct Binary Search. One of the best dithering methods as of today, though extremely slow. by
2008-08-03 02:17:39 +0000
eaad4db
* measure.c: there is now pipi_measure_msd in addition to pipi_measure_rmsd. by
2008-08-03 02:17:15 +0000
18fd827
* edd.c: output E_fast as well. by
2008-08-02 16:56:03 +0000
5974ab9
* edd.c: example program that computes the Floyd-Steinberg displacement, about twice as fast as the original code in research/2008-displacement. by
2008-08-02 12:13:01 +0000
4a27892
* blur.c: adapt the kernel size to large values of dx and/or dy. * blur.c: fix the dx/dy sign meaning. by
2008-08-02 12:12:58 +0000
1408cff
* Add Floyd-Steinberg grayscale dithering. by
2008-08-02 00:01:24 +0000
36da8b0
* pixels.c: fix a typo in the dithering method that could cause crashes. by
2008-08-02 00:01:20 +0000
9a536af
* measure.c: started writing error/measure functions. First one is RMSD. by
2008-08-02 00:01:16 +0000
a11f92f
* blur.c: support for greyscale images. by
2008-08-02 00:01:12 +0000
eea9f9b
* pixels.c: start supporting grayscale images. by
2008-08-02 00:01:08 +0000
f687640
* codec.c: bump Imlib2 and OpenCV priorities over SDL. by
2008-08-02 00:01:04 +0000
af15db5
* opencv.c: bring the OpenCV codec up to date. by
2008-08-02 00:01:00 +0000
0d8f015
* pixels.c: add support for 24-bpp BGR format. by
2008-08-02 00:00:56 +0000
8953c91
* pipi.c: reimplement pipi_new() without relying on the underlying codec library, so we can have several or none of them at some time. * sdl.c imlib.c: allow to save images that weren't created using the current codec. by
2008-08-02 00:00:51 +0000
732f6b2
* configure.ac: fix the OpenCV detection by using pkg-config. by
2008-08-02 00:00:45 +0000
3d86c2f
* Start shipping unit tests. The first one checks that converting an 8-bit per channel picture to float32 then back again does not change the image. by
2008-07-31 22:02:45 +0000