1 /*M/////////////////////////////////////////////////////////////////////////////////////// 2 // 3 // IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. 4 // 5 // By downloading, copying, installing or using the software you agree to this license. 6 // If you do not agree to this license, do not download, install, 7 // copy or use the software. 8 // 9 // 10 // Intel License Agreement 11 // For Open Source Computer Vision Library 12 // 13 // Copyright (C) 2000, Intel Corporation, all rights reserved. 14 // Third party copyrights are property of their respective owners. 15 // 16 // Redistribution and use in source and binary forms, with or without modification, 17 // are permitted provided that the following conditions are met: 18 // 19 // * Redistribution's of source code must retain the above copyright notice, 20 // this list of conditions and the following disclaimer. 21 // 22 // * Redistribution's in binary form must reproduce the above copyright notice, 23 // this list of conditions and the following disclaimer in the documentation 24 // and/or other materials provided with the distribution. 25 // 26 // * The name of Intel Corporation may not be used to endorse or promote products 27 // derived from this software without specific prior written permission. 28 // 29 // This software is provided by the copyright holders and contributors "as is" and 30 // any express or implied warranties, including, but not limited to, the implied 31 // warranties of merchantability and fitness for a particular purpose are disclaimed. 32 // In no event shall the Intel Corporation or contributors be liable for any direct, 33 // indirect, incidental, special, exemplary, or consequential damages 34 // (including, but not limited to, procurement of substitute goods or services; 35 // loss of use, data, or profits; or business interruption) however caused 36 // and on any theory of liability, whether in contract, strict liability, 37 // or tort (including negligence or otherwise) arising in any way out of 38 // the use of this software, even if advised of the possibility of such damage. 39 // 40 //M*/ 41 42 /* //////////////////////////////////////////////////////////////////// 43 // 44 // CvMat helper tables 45 // 46 // */ 47 48 #include "_cxcore.h" 49 50 const signed char icvDepthToType[] = 51 { 52 -1, -1, CV_8U, CV_8S, CV_16U, CV_16S, -1, -1, 53 CV_32F, CV_32S, -1, -1, -1, -1, -1, -1, CV_64F, -1 54 }; 55 56 const float icv8x32fTab[] = 57 { 58 -128.f, -127.f, -126.f, -125.f, -124.f, -123.f, -122.f, -121.f, 59 -120.f, -119.f, -118.f, -117.f, -116.f, -115.f, -114.f, -113.f, 60 -112.f, -111.f, -110.f, -109.f, -108.f, -107.f, -106.f, -105.f, 61 -104.f, -103.f, -102.f, -101.f, -100.f, -99.f, -98.f, -97.f, 62 -96.f, -95.f, -94.f, -93.f, -92.f, -91.f, -90.f, -89.f, 63 -88.f, -87.f, -86.f, -85.f, -84.f, -83.f, -82.f, -81.f, 64 -80.f, -79.f, -78.f, -77.f, -76.f, -75.f, -74.f, -73.f, 65 -72.f, -71.f, -70.f, -69.f, -68.f, -67.f, -66.f, -65.f, 66 -64.f, -63.f, -62.f, -61.f, -60.f, -59.f, -58.f, -57.f, 67 -56.f, -55.f, -54.f, -53.f, -52.f, -51.f, -50.f, -49.f, 68 -48.f, -47.f, -46.f, -45.f, -44.f, -43.f, -42.f, -41.f, 69 -40.f, -39.f, -38.f, -37.f, -36.f, -35.f, -34.f, -33.f, 70 -32.f, -31.f, -30.f, -29.f, -28.f, -27.f, -26.f, -25.f, 71 -24.f, -23.f, -22.f, -21.f, -20.f, -19.f, -18.f, -17.f, 72 -16.f, -15.f, -14.f, -13.f, -12.f, -11.f, -10.f, -9.f, 73 -8.f, -7.f, -6.f, -5.f, -4.f, -3.f, -2.f, -1.f, 74 0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 75 8.f, 9.f, 10.f, 11.f, 12.f, 13.f, 14.f, 15.f, 76 16.f, 17.f, 18.f, 19.f, 20.f, 21.f, 22.f, 23.f, 77 24.f, 25.f, 26.f, 27.f, 28.f, 29.f, 30.f, 31.f, 78 32.f, 33.f, 34.f, 35.f, 36.f, 37.f, 38.f, 39.f, 79 40.f, 41.f, 42.f, 43.f, 44.f, 45.f, 46.f, 47.f, 80 48.f, 49.f, 50.f, 51.f, 52.f, 53.f, 54.f, 55.f, 81 56.f, 57.f, 58.f, 59.f, 60.f, 61.f, 62.f, 63.f, 82 64.f, 65.f, 66.f, 67.f, 68.f, 69.f, 70.f, 71.f, 83 72.f, 73.f, 74.f, 75.f, 76.f, 77.f, 78.f, 79.f, 84 80.f, 81.f, 82.f, 83.f, 84.f, 85.f, 86.f, 87.f, 85 88.f, 89.f, 90.f, 91.f, 92.f, 93.f, 94.f, 95.f, 86 96.f, 97.f, 98.f, 99.f, 100.f, 101.f, 102.f, 103.f, 87 104.f, 105.f, 106.f, 107.f, 108.f, 109.f, 110.f, 111.f, 88 112.f, 113.f, 114.f, 115.f, 116.f, 117.f, 118.f, 119.f, 89 120.f, 121.f, 122.f, 123.f, 124.f, 125.f, 126.f, 127.f, 90 128.f, 129.f, 130.f, 131.f, 132.f, 133.f, 134.f, 135.f, 91 136.f, 137.f, 138.f, 139.f, 140.f, 141.f, 142.f, 143.f, 92 144.f, 145.f, 146.f, 147.f, 148.f, 149.f, 150.f, 151.f, 93 152.f, 153.f, 154.f, 155.f, 156.f, 157.f, 158.f, 159.f, 94 160.f, 161.f, 162.f, 163.f, 164.f, 165.f, 166.f, 167.f, 95 168.f, 169.f, 170.f, 171.f, 172.f, 173.f, 174.f, 175.f, 96 176.f, 177.f, 178.f, 179.f, 180.f, 181.f, 182.f, 183.f, 97 184.f, 185.f, 186.f, 187.f, 188.f, 189.f, 190.f, 191.f, 98 192.f, 193.f, 194.f, 195.f, 196.f, 197.f, 198.f, 199.f, 99 200.f, 201.f, 202.f, 203.f, 204.f, 205.f, 206.f, 207.f, 100 208.f, 209.f, 210.f, 211.f, 212.f, 213.f, 214.f, 215.f, 101 216.f, 217.f, 218.f, 219.f, 220.f, 221.f, 222.f, 223.f, 102 224.f, 225.f, 226.f, 227.f, 228.f, 229.f, 230.f, 231.f, 103 232.f, 233.f, 234.f, 235.f, 236.f, 237.f, 238.f, 239.f, 104 240.f, 241.f, 242.f, 243.f, 244.f, 245.f, 246.f, 247.f, 105 248.f, 249.f, 250.f, 251.f, 252.f, 253.f, 254.f, 255.f 106 }; 107 108 /* [-255..255].^2 */ 109 const ushort icv8x16uSqrTab[] = 110 { 111 65025, 64516, 64009, 63504, 63001, 62500, 62001, 61504, 61009, 60516, 60025, 59536, 112 59049, 58564, 58081, 57600, 57121, 56644, 56169, 55696, 55225, 54756, 54289, 53824, 113 53361, 52900, 52441, 51984, 51529, 51076, 50625, 50176, 49729, 49284, 48841, 48400, 114 47961, 47524, 47089, 46656, 46225, 45796, 45369, 44944, 44521, 44100, 43681, 43264, 115 42849, 42436, 42025, 41616, 41209, 40804, 40401, 40000, 39601, 39204, 38809, 38416, 116 38025, 37636, 37249, 36864, 36481, 36100, 35721, 35344, 34969, 34596, 34225, 33856, 117 33489, 33124, 32761, 32400, 32041, 31684, 31329, 30976, 30625, 30276, 29929, 29584, 118 29241, 28900, 28561, 28224, 27889, 27556, 27225, 26896, 26569, 26244, 25921, 25600, 119 25281, 24964, 24649, 24336, 24025, 23716, 23409, 23104, 22801, 22500, 22201, 21904, 120 21609, 21316, 21025, 20736, 20449, 20164, 19881, 19600, 19321, 19044, 18769, 18496, 121 18225, 17956, 17689, 17424, 17161, 16900, 16641, 16384, 16129, 15876, 15625, 15376, 122 15129, 14884, 14641, 14400, 14161, 13924, 13689, 13456, 13225, 12996, 12769, 12544, 123 12321, 12100, 11881, 11664, 11449, 11236, 11025, 10816, 10609, 10404, 10201, 10000, 124 9801, 9604, 9409, 9216, 9025, 8836, 8649, 8464, 8281, 8100, 7921, 7744, 125 7569, 7396, 7225, 7056, 6889, 6724, 6561, 6400, 6241, 6084, 5929, 5776, 126 5625, 5476, 5329, 5184, 5041, 4900, 4761, 4624, 4489, 4356, 4225, 4096, 127 3969, 3844, 3721, 3600, 3481, 3364, 3249, 3136, 3025, 2916, 2809, 2704, 128 2601, 2500, 2401, 2304, 2209, 2116, 2025, 1936, 1849, 1764, 1681, 1600, 129 1521, 1444, 1369, 1296, 1225, 1156, 1089, 1024, 961, 900, 841, 784, 130 729, 676, 625, 576, 529, 484, 441, 400, 361, 324, 289, 256, 131 225, 196, 169, 144, 121, 100, 81, 64, 49, 36, 25, 16, 132 9, 4, 1, 0, 1, 4, 9, 16, 25, 36, 49, 64, 133 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361, 400, 134 441, 484, 529, 576, 625, 676, 729, 784, 841, 900, 961, 1024, 135 1089, 1156, 1225, 1296, 1369, 1444, 1521, 1600, 1681, 1764, 1849, 1936, 136 2025, 2116, 2209, 2304, 2401, 2500, 2601, 2704, 2809, 2916, 3025, 3136, 137 3249, 3364, 3481, 3600, 3721, 3844, 3969, 4096, 4225, 4356, 4489, 4624, 138 4761, 4900, 5041, 5184, 5329, 5476, 5625, 5776, 5929, 6084, 6241, 6400, 139 6561, 6724, 6889, 7056, 7225, 7396, 7569, 7744, 7921, 8100, 8281, 8464, 140 8649, 8836, 9025, 9216, 9409, 9604, 9801, 10000, 10201, 10404, 10609, 10816, 141 11025, 11236, 11449, 11664, 11881, 12100, 12321, 12544, 12769, 12996, 13225, 13456, 142 13689, 13924, 14161, 14400, 14641, 14884, 15129, 15376, 15625, 15876, 16129, 16384, 143 16641, 16900, 17161, 17424, 17689, 17956, 18225, 18496, 18769, 19044, 19321, 19600, 144 19881, 20164, 20449, 20736, 21025, 21316, 21609, 21904, 22201, 22500, 22801, 23104, 145 23409, 23716, 24025, 24336, 24649, 24964, 25281, 25600, 25921, 26244, 26569, 26896, 146 27225, 27556, 27889, 28224, 28561, 28900, 29241, 29584, 29929, 30276, 30625, 30976, 147 31329, 31684, 32041, 32400, 32761, 33124, 33489, 33856, 34225, 34596, 34969, 35344, 148 35721, 36100, 36481, 36864, 37249, 37636, 38025, 38416, 38809, 39204, 39601, 40000, 149 40401, 40804, 41209, 41616, 42025, 42436, 42849, 43264, 43681, 44100, 44521, 44944, 150 45369, 45796, 46225, 46656, 47089, 47524, 47961, 48400, 48841, 49284, 49729, 50176, 151 50625, 51076, 51529, 51984, 52441, 52900, 53361, 53824, 54289, 54756, 55225, 55696, 152 56169, 56644, 57121, 57600, 58081, 58564, 59049, 59536, 60025, 60516, 61009, 61504, 153 62001, 62500, 63001, 63504, 64009, 64516, 65025 154 }; 155 156 const uchar icvSaturate8u[] = 157 { 158 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 161 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 162 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 163 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 164 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 167 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 168 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 173 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 174 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 175 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 176 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 177 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 178 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 179 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 180 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 181 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 182 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 183 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 184 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 185 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 186 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 187 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 188 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 189 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 190 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 191 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 192 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 193 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 195 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 196 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 197 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 198 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 199 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 200 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 201 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 202 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 203 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 205 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 206 255 207 }; 208 209 210 /* End of file. */ 211