Isn't an image a list of numbers? These numbers could the RGB of each pixel, or the N higher Fourier coefficients, etc. From these numbers, one can compute a single number, sure. Nonetheless, the idea that an image is a number and, hence, can be made illegal, looks utterly ludicrous to me due to the fact that the image -> number mapping is certainly not injective.
Anything that can be represented on a computer can be seen as a number, rather large numbers sometimes but still definitely numbers.
So, you give me a number, and I can give you infinitely many n-tuples that can be transformed into that number. Unless you know the mapping, and unless the mapping is injective, a single number is useless. It could represent infinitely many images.
So, I ask again, how can an image be a number?
eg:
big_number = 0;
while(!feof(file)) {
big_number = (big_number<<8) | file.readByte();
}Well sure :/ Of course there are.
At the simplest form you could swap things around, represent a fractional part of a number etc, at the more complex side you just have encryption.
But those are different things to your question "So, I ask again, how can an image be a number?"
>> "Lacking that, I merely say that an image can be represented by a number, but this is trivial"
I think you're arguing with yourself at this point.
For example, this --> A <-- looks like the letter A. But it isn't the letter A. It "is" only a representation, a bit-pattern with decimal notation 65, a glyph drawn from a font, a set of pixel elements on a graphics surface, a pattern of light on a display, a bunch of photons traveling through space, a group of excited photoreceptor cells, a set of signals traveling through neurons, etc. And it is none of these things, because none of them capture the essence of the pattern, repeated over human experiences.
So it seems to me that if you're trying to win an argument by drawing a distinction between "is" and "is represented by", you are not going to convince anyone who's put much thought into it. "Ceci n'est pas une pipe"; but a representation of a pipe is a (more or less faithful) representation of a pipe, whether you are blind or not, and so a number is a digital image, and vice versa.
I am not a mathematician, but to me this discussion reminds me of a vector having different coordinates, depending on what coordinate system we choose. Those are all different representations of the same thing. Likewise, a number can be represented in many different ways (binary, oct, hex, etc), but they all represent the same number. Is the vector its representation? If so, then the vector is many things, which is a funny definition of "to be". If the vector is itself, then it cannot be equal to any of its representations, it's something beyond its representation.
This is a programmers' forum, not a philosophers' forum. We should not be discussing the meaning of "is". That's too low-level and fundamental for our purposes. This does not imply it's not an interesting question, it's just not appropriate.
You could choose to represent an image as image data + decoding scheme, using an agreed representation of the decoding scheme such as a computer program. Mathematically we get nowhere because we are simply moving the encoding scheme around, but in practice, since we possess concrete encoding schemes it means we can practically discuss the situation better.
This is a long-winded away of agreeing with you, BTW.
- I carry a large number y with me
- the police demands that I disclose y, and I do; they apply inverse mapping f^{-1} and obtain x = f^{-1}(y) which is a porn image
- then I show the police that applying inverse mapping g^{-1}, one obtains a totally legit image z = g^{-1}(y)
Of course, finding such a mapping g could be extremely difficult, but if the same number can be obtained from two different images, how would the police be able to accuse me of anything?
Finding small mappings is another matter.
In fact, I'd go as far as saying that you could apply your argument to any data stored on a computer. But someone I don't think a judge would be impressed by "there re infinity many things the data in this file could represent and only under one mapping is it an indecent image".
Let's assume discrete, rectangular representations of images (width, height in pixels and colorspace of #000000-#FFFFFF). Here's an injective mapping from natural numbers (the indices of the vector of images) to actual images:
# In a C-like language where ** is
# the exponentiation operator, and
# ints are unbounded.
int colors = 0xFFFFFF + 1;
int i = 0;
vector images = new vector();
while(i++) {
for(int width = 1; width < i; width++) {
int height = i - width;
int area = width * height;
int pixels[area];
int combinations = colors ** area;
for(int c = 0; c < combinations; c++) {
for(int p = 0; p < area; p++) {
pixels[p] = c % (colors ** (p + 1));
}
images.append(new image(width, height, pixels));
}
}
}Alternatively, we all know that the file representing the image is nothing more than a collection of bytes. Bytes are nothing more than 8-element bit vectors. What if instead of treating the file as a collection of $n$ 8-element bit vectors we instead treated it as a single $n*8$-element bit vector. What we now have is a single (potentially VERY large) binary number.
To make any sense out of this number we'd have to pull out individual collections of bits, but this is no more complicated than doing a bitwise AND and bit shift.
Put another way: you can think of an IP-address as 4 sets of numbers between 0 and 255. For example, 192.168.1.1. You can view that same IP-address as the hexidecimal number 0xC0A80101. The hex representation is convenient, as it makes elements in the dotted quad apparent. 0xc0 = 192, 0xa8 = 168, 0x01 = 1, 0x01 = 1.
Hope that helps.
The point I was trying to make is that a number, itself, is nothing unless there's knowledge of the encoding algorithm. A CD-reader can make sense of the bits stored on the disk because it knows the encoding algorithm. If the CD-burner and CD-reader did not "talk the same language", it would be impossible to make sense of all those bits stored on the disk. Without knowing what interleaving and channel code was used, the CD-reader can't do its job.
I won't tell you how the bitstring was computed from the image. I don't tell you how many pixels the image has. I don't tell you anything. I only give you the bits. Wanna play for money?
An image is a 2-dimensional array. Say it's a M x N array. Suppose we use RGB so that each pixel is represented by 3 bytes. Then you have an M x N x 3 array of bytes. There are infinitely many mappings from the space of all M x N x 3 arrays of bytes into the reals. Of course you can transform the array into a number. But you can do it in many, many ways. If you know what mapping was used, and if the mapping is invertible, then you can obtain the M x N x 3 array of bytes from the number. If you don't know what mapping was used, or if the mapping is non-invertible, then you can't obtain the M x N x 3 array from the number.
So, I claim that an image is NOT a number. I claim that an image is a pair (y,f), where y is a number, and f is an invertible mapping from the space of M x N x 3 arrays into the reals. You guys are looking at y, and forgetting f. That's why an image is not a number, the image is x = f^{-1} (y). In short, one must know f, and f^{-1} must exist.
To use the verb to be in this scenario, I demand a one-to-one correspondence between numbers and images. If a number y can represent two distinct images x1 and x2, then we can't use "is", we can only use "can be".
I think everyone here understands that we require information beyond the number itself to get the image. I agree that a more accurate (pedantic) verb is that a number can store or represent an image. That implies that the number alone is not sufficient to get the image.
The thing is that while f can be in theory anything, it will be one of few things in practice. We can say what f is very simply. While knowing f is important, it's also easy to the point of trivial, so some people here are comfortable being less accurate and just saying "a number can be an image."
This reminds me of philosophy of identity discussion me and a friend used to go through. He thought he could fit a Miata in his old-school Suburban - but maybe he'd have to take off the side mirrors. But if he's allowing the side mirrors to be taken off, then how much is too much before it's no longer a Miata?
Such lack of precision is only tolerated because computation is fast and cheap. I would love to see people trying all f mappings with the help of an abacus! Let's be thankful that we live in this golden age.
I'm not trying to continue an argument, but rather just point out that the philosophy of identity can be an elusive thing.
Take an image x, decimate it, and obtain a lower-resolution version of it, which we call z. Are x and z the same image?
Mathematically, no. But when displayed on the screen, then most people would say they are the same. Of course, it depends on the definition of is, but such discussion would be utterly pointless. If we use the same definition, then there's no ambiguity.