4 ms·
How can an image be a number? This is an honest question. Isn't an image a list of numbers? These numbers could the RGB of each pixel, or the N higher Fourier
by Rod 17y ago
How can an image be a number? This is an honest question.
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.
- ramanujan 17y agoAn image is ultimately represented on disk as a binary string. Hence it is a number.
- Rod 17y agoOK, Mr. "Ramanujan", let's play a game: I give you a binary string, and you tell me what image corresponds to it. Are you game? 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?
- ErrantX 17y agoI think his point is... the image is stored on disk in a binary form. Which can also be represented as a number (Decimal).
- Rod 17y agoGeees, is this HN??? Am I the one who's too stupid to explain things properly, or is everyone under the weather because it's Monday morning? 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.
- AndrewDucker 17y agoYou're merely arguing there that a number is not necessarily an image, because it cannot be converted into one without knowing how. And you'd be right. But the image is still a number, because it's stored as a series of bits, and any series of bits is interpretable as a number.
- Rod 17y agoI asked: "How can an image be a number?", when I should have asked instead: "How can a number be an image?" 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".
- joeyo 17y agoSuch a strict definition prevents you for using "is" for anything at all! Is that your intention?
- scott_s 17y agoTo quote a former President, it depends on what your definition of "is" is. 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?
- ErrantX 17y ago
- loumf 17y agoGiven that definition, you can't encode anything as a number. I think someone pointed out above it's the number + the decoding method that is needed for it to be useful and that applies to images or even the gzip and ELF examples in the article. If I give you the number, but don't tell you it's a gzip of a C program, you probably won't be able to decode it easily.
- Rod 17y agoNot quite. One can encode anything into a number. Decoding is what it's hard, especially so if one does not know what the encoding scheme was. I suppose this is one of the reasons why NSA needs astronomical amounts of computational power.
- amalcon 17y agoA list of numbers is a number, in the same way that a string of digits is a number.
- Rod 17y agoTechnically, a string of digits is only a representation of a number. And such representation may not even be unique.
- deleted 17y ago[deleted]
- almost 17y agoNope, that's just one interpretation and it's not more valid then any other. Your argument is equivalent to saying something like this "129 isn't a single number, it's actually 110^2+210^1+9*10^0 (aka 100 + 20 + 9)". Anything that can be represented on a computer can be seen as a number, rather large numbers sometimes but still definitely numbers.
- Rod 17y agoYou are totally missing the point. The 3-tuple (1,2,9) may represent number 129 if you use the decimal expansion. What if you use a base-16 expansion, or a base-8 expansion? You can even choose the base so that the tuple -> number mapping is not injective (and, thus, not invertible). 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?
- jerf 17y agoIt is more proper to talk about the number + a decoding scheme. For given triple (image, image data, encoding scheme) any one can be held constant and the other two will have an infinite number of possibilities. In particular, any image can be represented as any set of data, plus an encoding scheme for that data. Trivial (but relevant) proof: The encoding scheme can simply hard code the image in question and trigger returning that image when it sees the held-constant image data. 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.
- Rod 17y agoThanks for wording it more precisely than I did. Most people are assuming that the mapping tuple -> number is known, while I am not. I could come up with my own invertible mapping. The cool thing would be this: - 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?
- jsolson 17y agoYou could view it as a list of numbers, yes. 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.
- Rod 17y agoThat's not what I meant at all. Of course you can transform a list of bytes into a number. But can you transform a number into a list of bytes? That is the problem. If you know the "encoding" algorithm, then you can. If you do not, then you simply can't. 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.