第7章 単色ディザリング 【リスト6-14】 2次元DCT double red0[GWDFT][GHDFT],green0[GWDFT][GHDFT],blue0[GWDFT][GHDFT]; double red1[GWDFT][GHDFT],green1[GWDFT][GHDFT],blue1[GWDFT][GHDFT]; double red2[GWDFT][GHDFT],green2[GWDFT][GHDFT],blue2[GWDFT][GHDFT]; double trt[GWDFT][GHDFT],wrt[GWDFT][GWDFT],hrt[GHDFT][GHDFT]; //作業用配列 oid setCosDT(){ for(int i=0;i=5) clearPT(DT,CF); //すべて白に設定 else{ clearPT(DT,C0);//カラー値分を白に設定 for(int k1=0; k1=0 && ii=0 && jj=2){ if(j>=2) add=1; else add=2; } else if(j>=2) add=3; M4[i][j]=M2[ii][jj]*4 + add; } } void Mat4to8(int M4[4][4], int M8[8][8]){ for(int i=0; i<8;i++)for(int j=0;j<8;j++){ int ii = i % 4,jj = j % 4, add=0; if(i>=4){ if(j>=4) add=1; else add=2; } else if(j>=4) add=3; M8[i][j]=M4[ii][jj]*4 + add; } } void Mat8to16(int M8[8][8], int M16[16][16]){ for(int i=0; i<16;i++)for(int j=0;j<16;j++){ int ii = i % 8,jj = j % 8, add=0; if(i>=8){ if(j>=8) add=1; else add=2; } else if(j>=8) add=3; M16[i][j]=M8[ii][jj]*4 + add; } } int main(){ int M2[2][2]={{0,3},{2,1}}; int M4[4][4]; int M8[8][8]; int M16[16][16]; for(int i=0;i<2;i++){ for(int j=0;j<2;j++)printf(" %3d",M2[i][j]); printf("\n"); } Mat2to4(M2, M4);printf("\n"); for(int i=0;i<4;i++){ for(int j=0;j<4;j++)printf(" %3d",M4[i][j]); printf("\n"); } Mat4to8(M4, M8);printf("\n"); for(int i=0;i<8;i++){ for(int j=0;j<8;j++)printf(" %3d",M8[i][j]); printf("\n"); } Mat8to16(M8, M16);printf("\n"); for(int i=0;i<16;i++){ for(int j=0;j<16;j++)printf(" %3d",M16[i][j]); printf("\n"); } getchar(); return 0; } 【実行結果】 0 3 2 1 0 12 3 15 8 4 11 7 2 14 1 13 10 6 9 5 0 48 12 60 3 51 15 63 32 16 44 28 35 19 47 31 8 56 4 52 11 59 7 55 40 24 36 20 43 27 39 23 2 50 14 62 1 49 13 61 34 18 46 30 33 17 45 29 10 58 6 54 9 57 5 53 42 26 38 22 41 25 37 21 0 192 48 240 12 204 60 252 3 195 51 243 15 207 63 255 128 64 176 112 140 76 188 124 131 67 179 115 143 79 191 127 32 224 16 208 44 236 28 220 35 227 19 211 47 239 31 223 160 96 144 80 172 108 156 92 163 99 147 83 175 111 159 95 8 200 56 248 4 196 52 244 11 203 59 251 7 199 55 247 136 72 184 120 132 68 180 116 139 75 187 123 135 71 183 119 40 232 24 216 36 228 20 212 43 235 27 219 39 231 23 215 168 104 152 88 164 100 148 84 171 107 155 91 167 103 151 87 2 194 50 242 14 206 62 254 1 193 49 241 13 205 61 253 130 66 178 114 142 78 190 126 129 65 177 113 141 77 189 125 34 226 18 210 46 238 30 222 33 225 17 209 45 237 29 221 162 98 146 82 174 110 158 94 161 97 145 81 173 109 157 93 10 202 58 250 6 198 54 246 9 201 57 249 5 197 53 245 138 74 186 122 134 70 182 118 137 73 185 121 133 69 181 117 42 234 26 218 38 230 22 214 41 233 25 217 37 229 21 213 170 106 154 90 166 102 150 86 169 105 153 89 165 101 149 85