kopia lustrzana https://gitlab.com/sane-project/website
				
				
				
			
		
			
				
	
	
		
			155 wiersze
		
	
	
		
			7.0 KiB
		
	
	
	
		
			HTML
		
	
	
			
		
		
	
	
			155 wiersze
		
	
	
		
			7.0 KiB
		
	
	
	
		
			HTML
		
	
	
| <html><body>
 | |
| <a href="doc009.html"><img src=../icons/next.gif alt="Next"></a>
 | |
| <a href="doc000.html"><img src=../icons/up.gif alt="Up"></a>
 | |
| <a href="doc007.html"><img src=../icons/previous.gif alt="Previous"></a>
 | |
| <a href="doc000.html"><img src=../icons/contents.gif alt="Contents"></a>
 | |
| <a href="doc019.html"><img src=../icons/index.gif alt="Index"></a>
 | |
| <hr>
 | |
| 
 | |
| <title>Image Data Format</title>
 | |
| <h2><a name="s3.2">3.2 Image Data Format</a></h2><a name="i0">
 | |
| 
 | |
| <p>Arguably the most important aspect of an image acquisition system is
 | |
| how images are represented.  The SANE approach is to define a simple
 | |
| yet powerful representation that is sufficient for vast majority of
 | |
| applications and devices.  While the representation is simple, the
 | |
| interface has been defined carefully to allow extending it in the
 | |
| future without breaking backwards compatibility.  Thus, it will be
 | |
| possible to accommodate future applications or devices that were not
 | |
| anticipated at the time this standard was created.
 | |
| 
 | |
| <p>A SANE image is a rectangular area.  The rectangular area is
 | |
| subdivided into a number of rows and columns.  At the intersection of
 | |
| each row and column is a quadratic pixel.  A pixel consists of one or
 | |
| more sample values.  Each sample value represents one channel (e.g.,
 | |
| the red channel).  Each sample value has a certain bit depth.  The bit
 | |
| depth is fixed for the entire image and can be as small as one bit.
 | |
| Valid bit depths are 1, 8, or 16 bits per sample.  If a device's
 | |
| natural bit depth is something else, it is up to the driver to scale
 | |
| the sample values appropriately (e.g., a 4 bit sample could be scaled
 | |
| by a factor of four to represent a sample value of depth 8).
 | |
| 
 | |
| <p><h3><a name="s3.2.1">3.2.1 Image Transmission</a></h3>
 | |
| 
 | |
| <p>The SANE API transmits an image as a sequence of frames.  Each frame
 | |
| covers the same rectangular area as the entire image, but may contain
 | |
| only a subset of the channels in the final image.  For example, a
 | |
| red/green/blue image could either be transmitted as a single frame
 | |
| that contains the sample values for all three channels or it could be
 | |
| transmitted as a sequence of three frames: the first frame containing
 | |
| the red channel, the second the green channel, and the third the blue
 | |
| channel.
 | |
| 
 | |
| <p>Conceptually, each frame is transmitted a byte at a time.  Each byte
 | |
| may contain 8 sample values (for an image bit depth of 1), one full
 | |
| sample value (for an image bit depth of 8), or a partial sample value
 | |
| (for an image bit depth of 16 or bigger).  In the latter case, the
 | |
| bytes of each sample value are transmitted in the machine's native
 | |
| byte order. For depth 1, the leftmost pixel is stored in the most
 | |
| significant bit, and the rightmost pixel in the least significant bit.
 | |
| <blockquote>
 | |
|   <center>
 | |
|     <b>Backend Implementation Note</b>
 | |
|   </center>
 | |
|   A network-based meta backend will have to ensure that the byte order
 | |
|   in image data is adjusted appropriately if necessary.  For example,
 | |
|   when the meta backend attaches to the server proxy, the proxy may
 | |
|   inform the backend of the server's byte order.  The backend can then
 | |
|   apply the adjustment if necessary.  In essence, this implements a
 | |
|   ``receiver-makes-right'' approach.
 | |
| </blockquote>
 | |
| 
 | |
| <p><p><a name="f2"></a>
 | |
|   <center>
 | |
|     
 | |
|     <img width=390 height=196 src="img001.gif">
 | |
|     <p><center>Figure 2: Transfer order of image data bytes</center>
 | |
|     
 | |
|   </center>
 | |
| <p>
 | |
| 
 | |
| <p>The order in which the sample values in a frame are transmitted is
 | |
| illustrated in Figure <a href="doc008.html#f2">2</a>.  As can be seen, the values are
 | |
| transmitted row by row and each row is transmitted from left-most to
 | |
| right-most column.  The left-to-right, top-to-bottom transmission
 | |
| order applies when the image is viewed in its normal orientation (as
 | |
| it would be displayed on a screen, for example).
 | |
| 
 | |
| <p>If a frame contains multiple channels, then the channels are
 | |
| transmitted in an interleaved fashion.  Figure <a href="doc008.html#f3">3</a>
 | |
| illustrates this for the case where a frame contains a complete
 | |
| red/green/blue image with a bit-depth of 8.  For a bit depth of 1,
 | |
| each byte contains 8 sample values of a <em>single</em> channel.  In
 | |
| other words, a bit depth 1 frame is transmitted in a byte interleaved
 | |
| fashion.
 | |
| 
 | |
| <p><p><a name="f3"></a>
 | |
|   <center>
 | |
|     
 | |
|     <img width=624 height=111 src="img002.gif">
 | |
|     <p><center>Figure 3: Bit and byte order or image data</center>
 | |
|     
 | |
|   </center>
 | |
| <p>
 | |
| 
 | |
| <p>When transmitting an image frame by frame, the frontend needs to know
 | |
| what part of the image a frame represents (and how many frames it
 | |
| should expect).  For that purpose, the SANE API tags every frame with
 | |
| a type.  This version of the SANE standard supports the following
 | |
| frame types:
 | |
| <blockquote>
 | |
| <dl>
 | |
| 
 | |
| <p><dt><tt>SANE_FRAME_GRAY<a name="i1"></tt>:<dd> The frame contains a single
 | |
|   channel of data that represents sample values from a spectral band
 | |
|   that covers the human visual range.  The image consists of this
 | |
|   frame only.
 | |
| 
 | |
| <p><dt><tt>SANE_FRAME_RGB<a name="i2"></tt>:<dd> The frame contains three
 | |
|   channels of data that represent sample values from the red, green,
 | |
|   and blue spectral bands.  The sample values are interleaved in the
 | |
|   order red, green, and blue.  The image consists of this frame only.
 | |
| 
 | |
| <p><dt><tt>SANE_FRAME_RED<a name="i3"></tt>:<dd> The frame contains one channel
 | |
|   of data that represents sample values from the red spectral band.
 | |
|   The complete image consists of three frames:
 | |
|   <tt>SANE_FRAME_RED</tt>, <tt>SANE_FRAME_GREEN</tt>, and
 | |
|   <tt>SANE_FRAME_BLUE</tt>.  The order in which the frames are
 | |
|   transmitted chosen by the backend.
 | |
| 
 | |
| <p><dt><tt>SANE_FRAME_GREEN<a name="i4"></tt>:<dd> The frame contains one
 | |
|   channel of data that represents sample values from the green
 | |
|   spectral band.  The complete image consists of three frames:
 | |
|   <tt>SANE_FRAME_RED</tt>, <tt>SANE_FRAME_GREEN</tt>, and
 | |
|   <tt>SANE_FRAME_BLUE</tt>.  The order in which the frames are
 | |
|   transmitted chosen by the backend.
 | |
| 
 | |
| <p><dt><tt>SANE_FRAME_BLUE<a name="i5"></tt>:<dd> The frame contains one channel
 | |
|   of data that represents sample values from the blue spectral band.
 | |
|   The complete image consists of three frames:
 | |
|   <tt>SANE_FRAME_RED</tt>, <tt>SANE_FRAME_GREEN</tt>, and
 | |
|   <tt>SANE_FRAME_BLUE</tt>.  The order in which the frames are
 | |
|   transmitted chosen by the backend.
 | |
| 
 | |
| <p></dl>
 | |
| </blockquote>
 | |
| 
 | |
| <p>In frames of type <tt>SANE_FRAME_GRAY</tt>, when the bit depth is 1 there are
 | |
| only two sample values possible, 1 represents minimum intensity
 | |
| (black) and 0 represents maximum intensity (white).  For all other bit
 | |
| depth and frame type combinations, a sample value of 0 represents
 | |
| minimum intensity and larger values represent increasing intensity.
 | |
| 
 | |
| <p>The combination of bit depth 1 and <tt>SANE_FRAME_RGB</tt> (or
 | |
| <tt>SANE_FRAME_RED</tt>, <tt>SANE_FRAME_GREEN</tt>, <tt>SANE_FRAME_BLUE</tt>)
 | |
| is rarely used and may not be supported by every frontend.
 | |
| 
 | |
| <p><p><hr>
 | |
| <a href="doc009.html"><img src=../icons/next.gif alt="Next"></a>
 | |
| <a href="doc000.html"><img src=../icons/up.gif alt="Up"></a>
 | |
| <a href="doc007.html"><img src=../icons/previous.gif alt="Previous"></a>
 | |
| <a href="doc000.html"><img src=../icons/contents.gif alt="Contents"></a>
 | |
| <a href="doc019.html"><img src=../icons/index.gif alt="Index"></a>
 | |
| <hr>
 | |
| </body></html>
 |