Alvy Ray Smith, a Pixar co-founder and computer graphics pioneer, writes on pixels, digital light and the history of Pixar.
HN commenters call his memo "A Pixel Is Not a Little Square" a classic that taught them about rendering, and praise his firsthand history of computing.
Why are you convinced of this, and can I help unconvince you? ;) What you describe is what’s called “Box Filtering” in the article. Box filtering is well studied, and it is known to not be the best possible output quality. The reason this is not the best approach is because a pixel is not a little square, a pixel is a sample of a signal, and it has to be approached with signal processing and human perception in mind. (See the famous paper linked in the article: A Pixel is Not a Little Square, A Pixel is Not a Little Square, A Pixel is Not a Little Square http://alvyray.com/Memos/CG/Microsoft/6_pixel.pdf)
It can be surprising at first, but when you analytically compute the area of non-overlapping parts of a pixel (i.e., use Box Filtering) you can introduce high frequencies that cause visible aliasing artifacts that will never go away. This is also true if you are using sub-sampling of a pixel, taking point samples and averaging them, no matter how many samples you take.
You can see the aliasing I’m talking about in the example at the top of the article, the 3rd one is the Box Filter - equivalent to computing the area of the polygons within each pixel. Look closely near the center of the circle where all the lines converge, and you can see little artifacts above and below, and to the left and right of the center, artifacts that are not there in the “Bilinear Filter” example on the right.
Did you mean [x,y,z,w]*M?
For textbox use, my workaround is to write [x,y,z,w]^T when I want to be clear that I really mean a column vector.
Incidentally, your comment inspired me to go spelunking through some old tech memos (Standard disclaimer: RenderMan dev, opinions my own, this is my speculation, yada yada). As best as I can tell, the row vector convention in RenderMan must have came from Newman and Sproull's "Principles of Interactive Computer Graphics" [1] by way of Alvy Ray Smith who referred to the convention as "computer graphics normal form" [2]. Interestingly, that book seems to have been inspired in turn by course material from Ivan Sutherland [3], who had previously built a head-mounted display using custom hardware with a row vector times matrix multiplier unit, among other things [4].
[1] https://archive.org/details/principlesofinter00newm/page/334/mode/2up
[2] http://alvyray.com/Memos/CG/Pixar/Matrix64.pdf#page=6
[3] https://www.computer.org/csdl/magazine/an/2018/04/08506443/17D45Xh13tX
[4] http://www.medien.ifi.lmu.de/lehre/ss09/ar/p757-sutherland.pdf#page=6
They aren't wrong. Regarding the comments and images in the linked article, there's a key point made there that's fundamentally wrong. Let me pick out a quote:
"We all get how pixels basically work. A computer divides a display into squares, and each square can be assigned one RGB value at a time. The total squares supported by the hardware is the device’s “resolution.” This square grid is the smallest possible subdivision of detail available to an artist."
This is the bit that's fundamentally wrong. Pixels are not squares. And never have been. They are "point samples". The fact that "magnified" pixel art displayed here compounds the error by displaying big squares rather than using an appropriate reconstruction filter doesn't help correct the misconception.
Here's a link to a classic paper on the topic: http://alvyray.com/Memos/CG/Microsoft/6_pixel.pdf
Probably not faster. Definitely better quality. As Alvy Ray Smith said, a pixel is not a little square, http://alvyray.com/Memos/CG/Microsoft/6_pixel.pdf
Edit: If you want to do even better than the tensor product Lanczos filtering, you can do a filter based on Euclidean distance. Make sure that you work in linear (non-gamma-adjusted) color space.
A couple more resources to read: http://www.imagemagick.org/Usage/filter/#cylindrical http://www.imagemagick.org/Usage/filter/nicolas/
Edit 2: really weird that this is getting downvoted. There’s not really anything to dispute here. It is straight-forward to show that the Lanczos method has objectively better output. Moreover, Alvy Ray Smith’s paper is a classic which anyone interested in image processing should read.
> A Pixel Is Not A Little Square!
> This is an issue that strikes right at the root of correct image (sprite) computing and the ability to correctly integrate (converge) the discrete and the continuous. The little square model is simply incorrect. It harms. It gets in the way. If you find yourself thinking that a pixel is a little square, please read this paper.
> A pixel is a point sample. It exists only at a point. For a color picture, a pixel might actually contain three samples, one for each primary color contributing to the picture at the sampling point. We can still think of this as a point sample of a color. But we cannot think of a pixel as a square—or anything other than a point.
Alvy Ray Smith, 1995 http://alvyray.com/Memos/CG/Microsoft/6_pixel.pdf
Steve was someone I threw out as a person who had multiple acts. I threw out Elon as an example on this page too. We are not trying to solve who the best business man is? After all, what would any of that have to do with the Woz? If you want to compare a $2 billion business to one of the most valuable companies in the world, we could be here all day.
By the way, I based my claim that Jobs was CEO of Pixar based on the co-founder of Pixar, and other facts I found on the Internet. Can you provide some facts to show that I'm wrong?
http://en.m.wikipedia.org/wiki/Alvy_Ray_Smith
http://alvyray.com/Pixar/PixarMyth1.htm