You can subscribe to this list here.
| 2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
(33) |
Dec
(20) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2004 |
Jan
(7) |
Feb
(44) |
Mar
(51) |
Apr
(43) |
May
(43) |
Jun
(36) |
Jul
(61) |
Aug
(44) |
Sep
(25) |
Oct
(82) |
Nov
(97) |
Dec
(47) |
| 2005 |
Jan
(77) |
Feb
(143) |
Mar
(42) |
Apr
(31) |
May
(93) |
Jun
(93) |
Jul
(35) |
Aug
(78) |
Sep
(56) |
Oct
(44) |
Nov
(72) |
Dec
(75) |
| 2006 |
Jan
(116) |
Feb
(99) |
Mar
(181) |
Apr
(171) |
May
(112) |
Jun
(86) |
Jul
(91) |
Aug
(111) |
Sep
(77) |
Oct
(72) |
Nov
(57) |
Dec
(51) |
| 2007 |
Jan
(64) |
Feb
(116) |
Mar
(70) |
Apr
(74) |
May
(53) |
Jun
(40) |
Jul
(519) |
Aug
(151) |
Sep
(132) |
Oct
(74) |
Nov
(282) |
Dec
(190) |
| 2008 |
Jan
(141) |
Feb
(67) |
Mar
(69) |
Apr
(96) |
May
(227) |
Jun
(404) |
Jul
(399) |
Aug
(96) |
Sep
(120) |
Oct
(205) |
Nov
(126) |
Dec
(261) |
| 2009 |
Jan
(136) |
Feb
(136) |
Mar
(119) |
Apr
(124) |
May
(155) |
Jun
(98) |
Jul
(136) |
Aug
(292) |
Sep
(174) |
Oct
(126) |
Nov
(126) |
Dec
(79) |
| 2010 |
Jan
(109) |
Feb
(83) |
Mar
(139) |
Apr
(91) |
May
(79) |
Jun
(164) |
Jul
(184) |
Aug
(146) |
Sep
(163) |
Oct
(128) |
Nov
(70) |
Dec
(73) |
| 2011 |
Jan
(235) |
Feb
(165) |
Mar
(147) |
Apr
(86) |
May
(74) |
Jun
(118) |
Jul
(65) |
Aug
(75) |
Sep
(162) |
Oct
(94) |
Nov
(48) |
Dec
(44) |
| 2012 |
Jan
(49) |
Feb
(40) |
Mar
(88) |
Apr
(35) |
May
(52) |
Jun
(69) |
Jul
(90) |
Aug
(123) |
Sep
(112) |
Oct
(120) |
Nov
(105) |
Dec
(116) |
| 2013 |
Jan
(76) |
Feb
(26) |
Mar
(78) |
Apr
(43) |
May
(61) |
Jun
(53) |
Jul
(147) |
Aug
(85) |
Sep
(83) |
Oct
(122) |
Nov
(18) |
Dec
(27) |
| 2014 |
Jan
(58) |
Feb
(25) |
Mar
(49) |
Apr
(17) |
May
(29) |
Jun
(39) |
Jul
(53) |
Aug
(52) |
Sep
(35) |
Oct
(47) |
Nov
(110) |
Dec
(27) |
| 2015 |
Jan
(50) |
Feb
(93) |
Mar
(96) |
Apr
(30) |
May
(55) |
Jun
(83) |
Jul
(44) |
Aug
(8) |
Sep
(5) |
Oct
|
Nov
(1) |
Dec
(1) |
| 2016 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
(2) |
Jul
|
Aug
(3) |
Sep
(1) |
Oct
(3) |
Nov
|
Dec
|
| 2017 |
Jan
|
Feb
(5) |
Mar
|
Apr
|
May
|
Jun
|
Jul
(3) |
Aug
|
Sep
(7) |
Oct
|
Nov
|
Dec
|
| 2018 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
|
|
|
|
|
1
|
|
2
(2) |
3
(7) |
4
(3) |
5
(7) |
6
(18) |
7
(6) |
8
|
|
9
(1) |
10
(1) |
11
(1) |
12
|
13
(5) |
14
(2) |
15
(2) |
|
16
|
17
(2) |
18
|
19
|
20
|
21
|
22
(1) |
|
23
(2) |
24
(3) |
25
(6) |
26
(1) |
27
|
28
(8) |
29
(9) |
|
30
(3) |
31
(4) |
|
|
|
|
|
|
From: Daniel H. <dh...@gm...> - 2011-10-13 15:41:15
|
Ah yes, I forget :/ I was focused on images as being "pure" things that should be displayed, and forgot about the image processing angle. So would the solution be a keyword argument that tells imshow/BboxImage and friends not to interpolate when at native resolution, which is set to the current behavior as default? If that's not an acceptable solution, I can just leave the patch in my own personal code and not worry about any further...I thought that I was fixing a bug there :) I guess the main difference is whether the image is treated as sacred and should be displayed perfectly when possible, versus the ability to modify the picture on purpose via the interpolations, for whatever reason the user wants. Understandably, matplotlib has taken the latter approach, because the context has always been (as far as I can tell from the examples) displaying the pixels for a scientific purpose. However, when you want to display an image for a annotational type purpose, the former approach should be taken, in my opinion. On Thu, Oct 13, 2011 at 11:13 AM, John Hunter <jd...@gm...> wrote: > On Thu, Oct 13, 2011 at 10:06 AM, Daniel Hyams <dh...@gm...> wrote: > > > Isn't the purpose of interpolation to handle situations where the image > is > > being displayed at a different size than its native resolution? It seems > > Not solely, it can also be used to do local average of noisy images to > get a smoother view, eg bilinear or bicubic averaging of neighboring > pixels. > -- Daniel Hyams dh...@gm... |
|
From: John H. <jd...@gm...> - 2011-10-13 15:14:15
|
On Thu, Oct 13, 2011 at 10:06 AM, Daniel Hyams <dh...@gm...> wrote: > Isn't the purpose of interpolation to handle situations where the image is > being displayed at a different size than its native resolution? It seems Not solely, it can also be used to do local average of noisy images to get a smoother view, eg bilinear or bicubic averaging of neighboring pixels. |
|
From: Daniel H. <dh...@gm...> - 2011-10-13 15:07:22
|
> > > imshow() does take an "interpolation" kwarg, where you can specify > "nearest" for pre v1.1.0 versions and "none" (not None) in the recent > release. "nearest" would be close to what you want, while "none" is exactly > what you want. > > Personally, I don't think it would be a good idea to automatically turn > interpolation off on such a specific set of conditions, but I could be > wrong. I would rather have the user explicitly state their interpolation > intentions. > > Ben Root Hello Ben, Isn't the purpose of interpolation to handle situations where the image is being displayed at a different size than its native resolution? It seems appropriate to me to turn interpolation off in such a case. Just some context of what I was up to when I ran into this one....I'm trying to allow the user to paste images (either from file or clipboard) onto a matplotlib canvas and be able to drag and resize them, very similar to the way powerpoint works. So I wanted to work with the appropriate image object in matplotlib, and BboxImage was the best I found after digging in the code for a bit; imshow() is too tied to the axis....these are supposed to be just free floating images. What I ran into was that, on initial paste (where I am sizing the BboxImage the same width/height as the incoming picture), the image was very blurry (because of the interpolation). I still want the interpolation on so that the image looks nice when it is resized by the user with the grab handles, but in the specific case where no interpolation is needed, this patch turns it off. The pasting/dragging/resizing has actually turned out pretty well...once I get it cleaned up and working how I want it to, I'll submit it to you guys for inclusion into matplotlib if you want it. I was hoping to formulate it as a mixin that will work for any artist (not just BboxImage) within reasonable limits. -- Daniel Hyams dh...@gm... |
|
From: Benjamin R. <ben...@ou...> - 2011-10-13 14:16:32
|
On Thursday, October 13, 2011, Daniel Hyams <dh...@gm...> wrote:
> I was playing around with images.BboxImage, and found that if I displayed,
say a 100x100 image at its native resolution (exactly 100x100 pixels on the
plotting window), it was blurred. This is because of the interpolation
jumping in and interpolating when it is not needed.
> This might not be the best way to fix, but it does work....in matplotlib
1.0.0, it is image.py around line 1102 (this is BboxImage.make_image). Just
after numrows and numcols is set in that routine, do
> if (r-l) == numcols and (t-b) == numrows:
> im.set_interpolation(0)
> As you can see, all this does is just flip the interpolation off if the
size of the image is the same size that it is about to be rendered as...and
the regular interpolation is used otherwise.
>
> I do apologize for the lack of a proper patch, but for little things like
this I think a word description works as well or better; I need to sit down
and both learn git and set of a development environment for matplotlib, but
after reading through the docs on the web site about it, decided that would
take me more time than I had at the moment.
>
> In context:
> def make_image(self, renderer, magnification=1.0):
> if self._A is None:
> raise RuntimeError('You must first set the image array or the
image attribute')
> if self._imcache is None:
> if self._A.dtype == np.uint8 and len(self._A.shape) == 3:
> im = _image.frombyte(self._A, 0)
> im.is_grayscale = False
> else:
> if self._rgbacache is None:
> x = self.to_rgba(self._A, self._alpha)
> self._rgbacache = x
> else:
> x = self._rgbacache
> im = _image.fromarray(x, 0)
> if len(self._A.shape) == 2:
> im.is_grayscale = self.cmap.is_gray()
> else:
> im.is_grayscale = False
> self._imcache = im
> if self.origin=='upper':
> im.flipud_in()
> else:
> im = self._imcache
> # image input dimensions
> im.reset_matrix()
> im.set_interpolation(self._interpd[self._interpolation])
>
>
> im.set_resample(self._resample)
> l, b, r, t = self.get_window_extent(renderer).extents
#bbox.extents
> widthDisplay = (round(r) + 0.5) - (round(l) - 0.5)
> heightDisplay = (round(t) + 0.5) - (round(b) - 0.5)
> widthDisplay *= magnification
> heightDisplay *= magnification
> numrows, numcols = self._A.shape[:2]
>
> if (r-l) == numcols and (t-b) == numrows: # <-----------------
add this
> im.set_interpolation(0)
#<-------------- and this
> # resize viewport to display
> rx = widthDisplay / numcols
> ry = heightDisplay / numrows
> #im.apply_scaling(rx*sx, ry*sy)
> im.apply_scaling(rx, ry)
> #im.resize(int(widthDisplay+0.5), int(heightDisplay+0.5),
> # norm=self._filternorm, radius=self._filterrad)
> im.resize(int(widthDisplay), int(heightDisplay),
> norm=self._filternorm, radius=self._filterrad)
> return im
>
> --
> Daniel Hyams
> dh...@gm...
>
Daniel,
imshow() does take an "interpolation" kwarg, where you can specify "nearest"
for pre v1.1.0 versions and "none" (not None) in the recent release.
"nearest" would be close to what you want, while "none" is exactly what you
want.
Personally, I don't think it would be a good idea to automatically turn
interpolation off on such a specific set of conditions, but I could be
wrong. I would rather have the user explicitly state their interpolation
intentions.
Ben Root
|
|
From: Daniel H. <dh...@gm...> - 2011-10-13 11:36:12
|
I was playing around with images.BboxImage, and found that if I displayed,
say a 100x100 image at its native resolution (exactly 100x100 pixels on the
plotting window), it was blurred. This is because of the interpolation
jumping in and interpolating when it is not needed.
This might not be the best way to fix, but it does work....in matplotlib
1.0.0, it is image.py around line 1102 (this is BboxImage.make_image). Just
after numrows and numcols is set in that routine, do
if (r-l) == numcols and (t-b) == numrows:
im.set_interpolation(0)
As you can see, all this does is just flip the interpolation off if the size
of the image is the same size that it is about to be rendered as...and the
regular interpolation is used otherwise.
I do apologize for the lack of a proper patch, but for little things like
this I think a word description works as well or better; I need to sit down
and both learn git and set of a development environment for matplotlib, but
after reading through the docs on the web site about it, decided that would
take me more time than I had at the moment.
In context:
def make_image(self, renderer, magnification=1.0):
if self._A is None:
raise RuntimeError('You must first set the image array or the
image attribute')
if self._imcache is None:
if self._A.dtype == np.uint8 and len(self._A.shape) == 3:
im = _image.frombyte(self._A, 0)
im.is_grayscale = False
else:
if self._rgbacache is None:
x = self.to_rgba(self._A, self._alpha)
self._rgbacache = x
else:
x = self._rgbacache
im = _image.fromarray(x, 0)
if len(self._A.shape) == 2:
im.is_grayscale = self.cmap.is_gray()
else:
im.is_grayscale = False
self._imcache = im
if self.origin=='upper':
im.flipud_in()
else:
im = self._imcache
# image input dimensions
im.reset_matrix()
im.set_interpolation(self._interpd[self._interpolation])
im.set_resample(self._resample)
l, b, r, t = self.get_window_extent(renderer).extents #bbox.extents
widthDisplay = (round(r) + 0.5) - (round(l) - 0.5)
heightDisplay = (round(t) + 0.5) - (round(b) - 0.5)
widthDisplay *= magnification
heightDisplay *= magnification
numrows, numcols = self._A.shape[:2]
if (r-l) == numcols and (t-b) == numrows: # <-----------------
add this
im.set_interpolation(0)
#<-------------- and this
# resize viewport to display
rx = widthDisplay / numcols
ry = heightDisplay / numrows
#im.apply_scaling(rx*sx, ry*sy)
im.apply_scaling(rx, ry)
#im.resize(int(widthDisplay+0.5), int(heightDisplay+0.5),
# norm=self._filternorm, radius=self._filterrad)
im.resize(int(widthDisplay), int(heightDisplay),
norm=self._filternorm, radius=self._filterrad)
return im
--
Daniel Hyams
dh...@gm...
|