Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Loading…

Honouring the alpha attribute when creating composite images. #1955

Merged
merged 4 commits into from

3 participants

@Westacular

I noticed some problems with the drawing of Images onto axes. Specifically, when option_image_nocomposite() is False and a single composite image is created (which seems to be the default for most backends), the alpha attribute of the Image objects was being ignored in the compositing process.

I've fixed that by multiplying the alpha component of each pixel with the attribute of the image, if set, during the process of compositing/blending the images together.

I've set up a test for this, as well, but getting the correct results from it depends on the changes from #1868.

In the process of testing this, I discovered that for output formats other than PNG, the Cairo backend was entirely failing to render images. I fixed that issue, however, a problem still remains: the Cairo image blending algorithms assume that pixel values are premultiplied by their alpha components, which is not currently being done in the process of converting image buffers for use by Cairo. For non-opaque images where rgb values exceed the alpha value, the result can be pretty weird and psychedelic. I can take a crack at fixing this, but it's a more involved change, and given that previously images weren't working at all for Cairo, it's perhaps better saved for a separate pull request.

@mdboom
Owner

:+1: I agree we can save the Cairo fix for later. It looks as it the test images were perhaps not committed.

@Westacular

I've rebased/squashed this (with the formerly forgotten test images) and the Travis build is passing now.

@mdboom
Owner

:+1:

src/_image.cpp
@@ -823,6 +825,16 @@
Image* thisim = static_cast<Image*>(tup[0].ptr());
ox = (long)Py::Int(tup[1]);
oy = (long)Py::Int(tup[2]);
+ if (tup[3].ptr() == Py_None)
@pelson Collaborator
pelson added a note

I'm not sure about this - does it not set an IndexError? (http://docs.python.org/2/c-api/tuple.html#PyTuple_GetItem)
I wonder if we'd be better checking the tuple's size?

@mdboom Owner
mdboom added a note

Yeah, I think I agree. To maintain backward compatibility, maybe do:

if (tup.size() <= 2 || tup[3].ptr() == Py_None)

OK. Everything that calls this in the codebase (all … 2 instances) was updated with the added parameter, but I'd forgotten the possibility that user code might call this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
lib/matplotlib/tests/test_image.py
@@ -235,6 +235,26 @@ def test_image_composite_background():
ax.set_axis_bgcolor((1, 0, 0, 0.5))
ax.set_xlim([0, 12])
+@image_comparison(baseline_images=['image_composite_alpha'], remove_text=True)
+def test_image_composite_alpha():
+ """
+ Tests that the alpha value is recognized and correctly applied in the
+ process of compositing images together.
+ """
+ fig = plt.figure()
+ ax = fig.add_subplot(111)
+ arr = np.arange(12).reshape(4, 3)
+ ax.imshow(arr, extent=[0, 2, 15, 0], alpha=0.25)
+ ax.imshow(arr, extent=[4, 6, 15, 0], alpha=0.5)
@pelson Collaborator
pelson added a note

What would happen if this image was RGBA? Would the alpha value still have any effect?

The image's alpha channel would be multiplied by the alpha value. So, an image with alphas ranging from 0.2 to 0.8 combined with alpha=0.5 would effectively be treated like an image with alphas in the 0.1 to 0.4 range. This seems reasonable, and it's already the way the backends that don't require this compositing behave.

But now that you point it out, this test case should probably involve that. I'll update it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
@pelson pelson merged commit 3e9f4a6 into matplotlib:master
@pelson
Collaborator

Another fantastic piece of work @Westacular. Cheers!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
This page is out of date. Refresh to see the latest.
View
2  lib/matplotlib/axes.py
@@ -2054,7 +2054,7 @@ def draw(self, renderer=None, inframe=False):
zorder_images.sort(key=lambda x: x[0])
mag = renderer.get_image_magnification()
- ims = [(im.make_image(mag), 0, 0) for z, im in zorder_images]
+ ims = [(im.make_image(mag), 0, 0, im.get_alpha()) for z, im in zorder_images]
l, b, r, t = self.bbox.extents
width = mag * ((round(r) + 0.5) - (round(l) - 0.5))
View
3  lib/matplotlib/backends/backend_cairo.py
@@ -163,8 +163,11 @@ def draw_image(self, gc, x, y, im):
buf, cairo.FORMAT_ARGB32, cols, rows, cols*4)
ctx = gc.ctx
y = self.height - y - rows
+
+ ctx.save()
ctx.set_source_surface (surface, x, y)
ctx.paint()
+ ctx.restore()
im.flipud_out()
View
2  lib/matplotlib/figure.py
@@ -990,7 +990,7 @@ def draw(self, renderer):
# make a composite image blending alpha
# list of (_image.Image, ox, oy)
mag = renderer.get_image_magnification()
- ims = [(im.make_image(mag), im.ox, im.oy)
+ ims = [(im.make_image(mag), im.ox, im.oy, im.get_alpha())
for im in self.images]
im = _image.from_images(self.bbox.height * mag,
View
BIN  lib/matplotlib/tests/baseline_images/test_image/image_composite_alpha.pdf
Binary file not shown
View
BIN  lib/matplotlib/tests/baseline_images/test_image/image_composite_alpha.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
212 lib/matplotlib/tests/baseline_images/test_image/image_composite_alpha.svg
@@ -0,0 +1,212 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Created with matplotlib (http://matplotlib.org/) -->
+<svg height="432pt" version="1.1" viewBox="0 0 576 432" width="576pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <style type="text/css">
+*{stroke-linecap:square;stroke-linejoin:round;}
+ </style>
+ </defs>
+ <g id="figure_1">
+ <g id="patch_1">
+ <path d="
+M0 432
+L576 432
+L576 0
+L0 0
+z
+" style="fill:#ffffff;"/>
+ </g>
+ <g id="axes_1">
+ <g id="patch_2">
+ <path d="
+M122.4 388.8
+L468 388.8
+L468 43.2
+L122.4 43.2
+z
+" style="fill:#008000;"/>
+ </g>
+ <g clip-path="url(#p58a7a31862)">
+ <image height="347" id="imageb6c558da01" width="347" x="122.0" xlink:href="data:image/png;base64,
+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" y="42.0"/>
+ </g>
+ <g id="matplotlib.axis_1">
+ <g id="xtick_1">
+ <g id="line2d_1">
+ <defs>
+ <path d="
+M0 0
+L0 -4" id="mcb557df647" style="stroke:#000000;stroke-linecap:butt;stroke-width:0.5;"/>
+ </defs>
+ <g>
+ <use style="stroke:#000000;stroke-linecap:butt;stroke-width:0.5;" x="122.4" xlink:href="#mcb557df647" y="388.8"/>
+ </g>
+ </g>
+ <g id="line2d_2">
+ <defs>
+ <path d="
+M0 0
+L0 4" id="mdad270ee8e" style="stroke:#000000;stroke-linecap:butt;stroke-width:0.5;"/>
+ </defs>
+ <g>
+ <use style="stroke:#000000;stroke-linecap:butt;stroke-width:0.5;" x="122.4" xlink:href="#mdad270ee8e" y="43.2"/>
+ </g>
+ </g>
+ </g>
+ <g id="xtick_2">
+ <g id="line2d_3">
+ <g>
+ <use style="stroke:#000000;stroke-linecap:butt;stroke-width:0.5;" x="191.52" xlink:href="#mcb557df647" y="388.8"/>
+ </g>
+ </g>
+ <g id="line2d_4">
+ <g>
+ <use style="stroke:#000000;stroke-linecap:butt;stroke-width:0.5;" x="191.52" xlink:href="#mdad270ee8e" y="43.2"/>
+ </g>
+ </g>
+ </g>
+ <g id="xtick_3">
+ <g id="line2d_5">
+ <g>
+ <use style="stroke:#000000;stroke-linecap:butt;stroke-width:0.5;" x="260.64" xlink:href="#mcb557df647" y="388.8"/>
+ </g>
+ </g>
+ <g id="line2d_6">
+ <g>
+ <use style="stroke:#000000;stroke-linecap:butt;stroke-width:0.5;" x="260.64" xlink:href="#mdad270ee8e" y="43.2"/>
+ </g>
+ </g>
+ </g>
+ <g id="xtick_4">
+ <g id="line2d_7">
+ <g>
+ <use style="stroke:#000000;stroke-linecap:butt;stroke-width:0.5;" x="329.76" xlink:href="#mcb557df647" y="388.8"/>
+ </g>
+ </g>
+ <g id="line2d_8">
+ <g>
+ <use style="stroke:#000000;stroke-linecap:butt;stroke-width:0.5;" x="329.76" xlink:href="#mdad270ee8e" y="43.2"/>
+ </g>
+ </g>
+ </g>
+ <g id="xtick_5">
+ <g id="line2d_9">
+ <g>
+ <use style="stroke:#000000;stroke-linecap:butt;stroke-width:0.5;" x="398.88" xlink:href="#mcb557df647" y="388.8"/>
+ </g>
+ </g>
+ <g id="line2d_10">
+ <g>
+ <use style="stroke:#000000;stroke-linecap:butt;stroke-width:0.5;" x="398.88" xlink:href="#mdad270ee8e" y="43.2"/>
+ </g>
+ </g>
+ </g>
+ <g id="xtick_6">
+ <g id="line2d_11">
+ <g>
+ <use style="stroke:#000000;stroke-linecap:butt;stroke-width:0.5;" x="468.0" xlink:href="#mcb557df647" y="388.8"/>
+ </g>
+ </g>
+ <g id="line2d_12">
+ <g>
+ <use style="stroke:#000000;stroke-linecap:butt;stroke-width:0.5;" x="468.0" xlink:href="#mdad270ee8e" y="43.2"/>
+ </g>
+ </g>
+ </g>
+ </g>
+ <g id="matplotlib.axis_2">
+ <g id="ytick_1">
+ <g id="line2d_13">
+ <defs>
+ <path d="
+M0 0
+L4 0" id="mc8fcea1516" style="stroke:#000000;stroke-linecap:butt;stroke-width:0.5;"/>
+ </defs>
+ <g>
+ <use style="stroke:#000000;stroke-linecap:butt;stroke-width:0.5;" x="122.4" xlink:href="#mc8fcea1516" y="112.32"/>
+ </g>
+ </g>
+ <g id="line2d_14">
+ <defs>
+ <path d="
+M0 0
+L-4 0" id="m0d5b0a6425" style="stroke:#000000;stroke-linecap:butt;stroke-width:0.5;"/>
+ </defs>
+ <g>
+ <use style="stroke:#000000;stroke-linecap:butt;stroke-width:0.5;" x="468.0" xlink:href="#m0d5b0a6425" y="112.32"/>
+ </g>
+ </g>
+ </g>
+ <g id="ytick_2">
+ <g id="line2d_15">
+ <g>
+ <use style="stroke:#000000;stroke-linecap:butt;stroke-width:0.5;" x="122.4" xlink:href="#mc8fcea1516" y="181.44"/>
+ </g>
+ </g>
+ <g id="line2d_16">
+ <g>
+ <use style="stroke:#000000;stroke-linecap:butt;stroke-width:0.5;" x="468.0" xlink:href="#m0d5b0a6425" y="181.44"/>
+ </g>
+ </g>
+ </g>
+ <g id="ytick_3">
+ <g id="line2d_17">
+ <g>
+ <use style="stroke:#000000;stroke-linecap:butt;stroke-width:0.5;" x="122.4" xlink:href="#mc8fcea1516" y="250.56"/>
+ </g>
+ </g>
+ <g id="line2d_18">
+ <g>
+ <use style="stroke:#000000;stroke-linecap:butt;stroke-width:0.5;" x="468.0" xlink:href="#m0d5b0a6425" y="250.56"/>
+ </g>
+ </g>
+ </g>
+ <g id="ytick_4">
+ <g id="line2d_19">
+ <g>
+ <use style="stroke:#000000;stroke-linecap:butt;stroke-width:0.5;" x="122.4" xlink:href="#mc8fcea1516" y="319.68"/>
+ </g>
+ </g>
+ <g id="line2d_20">
+ <g>
+ <use style="stroke:#000000;stroke-linecap:butt;stroke-width:0.5;" x="468.0" xlink:href="#m0d5b0a6425" y="319.68"/>
+ </g>
+ </g>
+ </g>
+ </g>
+ <g id="patch_3">
+ <path d="
+M122.4 43.2
+L468 43.2" style="fill:none;stroke:#000000;"/>
+ </g>
+ <g id="patch_4">
+ <path d="
+M468 388.8
+L468 43.2" style="fill:none;stroke:#000000;"/>
+ </g>
+ <g id="patch_5">
+ <path d="
+M122.4 388.8
+L468 388.8" style="fill:none;stroke:#000000;"/>
+ </g>
+ <g id="patch_6">
+ <path d="
+M122.4 388.8
+L122.4 43.2" style="fill:none;stroke:#000000;"/>
+ </g>
+ </g>
+ </g>
+ <defs>
+ <clipPath id="p58a7a31862">
+ <path d="
+M122.4 388.8
+L468 388.8
+L468 43.2
+L122.4 43.2
+z
+"/>
+ </clipPath>
+ </defs>
+</svg>
View
26 lib/matplotlib/tests/test_image.py
@@ -235,6 +235,32 @@ def test_image_composite_background():
ax.set_axis_bgcolor((1, 0, 0, 0.5))
ax.set_xlim([0, 12])
+@image_comparison(baseline_images=['image_composite_alpha'], remove_text=True)
+def test_image_composite_alpha():
+ """
+ Tests that the alpha value is recognized and correctly applied in the
+ process of compositing images together.
+ """
+ fig = plt.figure()
+ ax = fig.add_subplot(111)
+ arr = np.zeros((11, 21, 4))
+ arr[:, :, 0] = 1
+ arr[:, :, 3] = np.concatenate((np.arange(0, 1.1, 0.1), np.arange(0, 1, 0.1)[::-1]))
+ arr2 = np.zeros((21, 11, 4))
+ arr2[:, :, 0] = 1
+ arr2[:, :, 1] = 1
+ arr2[:, :, 3] = np.concatenate((np.arange(0, 1.1, 0.1), np.arange(0, 1, 0.1)[::-1]))[:, np.newaxis]
+ ax.imshow(arr, extent=[1, 2, 5, 0], alpha=0.3)
+ ax.imshow(arr, extent=[2, 3, 5, 0], alpha=0.6)
+ ax.imshow(arr, extent=[3, 4, 5, 0])
+ ax.imshow(arr2, extent=[0, 5, 1, 2])
+ ax.imshow(arr2, extent=[0, 5, 2, 3], alpha=0.6)
+ ax.imshow(arr2, extent=[0, 5, 3, 4], alpha=0.3)
+ ax.set_axis_bgcolor((0, 0.5, 0, 1))
+ ax.set_xlim([0, 5])
+ ax.set_ylim([5, 0])
+
+
if __name__=='__main__':
import nose
nose.runmodule(argv=['-s','--with-doctest'], exit=False)
View
21 src/_image.cpp
@@ -796,6 +796,8 @@ _image_module::from_images(const Py::Tuple& args)
Py::Tuple tup;
size_t ox(0), oy(0), thisx(0), thisy(0);
+ float alpha;
+ bool apply_alpha;
//copy image 0 output buffer into return images output buffer
Image* imo = new Image;
@@ -823,6 +825,16 @@ _image_module::from_images(const Py::Tuple& args)
Image* thisim = static_cast<Image*>(tup[0].ptr());
ox = (long)Py::Int(tup[1]);
oy = (long)Py::Int(tup[2]);
+ if (tup.size() <= 3 || tup[3].ptr() == Py_None)
+ {
+ apply_alpha = false;
+ }
+ else
+ {
+ apply_alpha = true;
+ alpha = Py::Float(tup[3]);
+ }
+
bool isflip = (thisim->rbufOut->stride()) < 0;
//std::cout << "from images " << isflip << "; stride=" << thisim->rbufOut->stride() << std::endl;
size_t ind = 0;
@@ -851,7 +863,14 @@ _image_module::from_images(const Py::Tuple& args)
p.r = *(thisim->bufferOut + ind++);
p.g = *(thisim->bufferOut + ind++);
p.b = *(thisim->bufferOut + ind++);
- p.a = *(thisim->bufferOut + ind++);
+ if (apply_alpha)
+ {
+ p.a = (pixfmt::value_type) *(thisim->bufferOut + ind++) * alpha;
+ }
+ else
+ {
+ p.a = *(thisim->bufferOut + ind++);
+ }
pixf.blend_pixel(thisx, thisy, p, 255);
}
}
Something went wrong with that request. Please try again.