Cody

Problem 682. Image Processing 002 : Fix Vignetting in a Visible Sensor

Solution 3367208

Submitted on 25 Oct 2020 by Rafael S.T. Vieira
This solution is locked. To view this solution, you need to provide a solution of the same size or smaller.

Test Suite

Test Status Code Input and Output
1   Pass
%Typical Vignette load penny.mat; Timg=double(P); Timg=Timg+250; [nr nc]=size(Timg); obscuration=zeros(1,nc); widthL=24; widthR=16; maxobsL=.16; maxobsR=.20; % ObscurationLinear obscuration(1:1+widthL)=maxobsL*(widthL-(0:widthL))/widthL; obscuration(end:-1:end-widthR)=maxobsR*(widthR-(0:widthR))/widthR; Vimg=bsxfun(@times,Timg,1-obscuration); % Processing Fimg=Vignette_fix(Vimg,obscuration); % % Verification tolerance=[0.01 1]; Pass=1; % Hi check tcheck=(Timg*(1+tolerance(1))+tolerance(2))-Fimg; if min(tcheck(:))<0,Pass=0;end % Lo check tcheck=Fimg-(Timg*(1-tolerance(1))-tolerance(2)); if min(tcheck(:))<0,Pass=0;end assert(isequal(Pass,1))

Fimg = Columns 1 through 29 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 251 252 252 252 252 252 252 252 252 252 252 252 252 252 253 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 251 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 251 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 251 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 251 252 252 252 252 252 252 252 252 252 252 252 252 252 252 251 252 251 252 252 252 252 252 252 252 252 251 252 252 252 252 252 252 251 263 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 254 295 338 252 252 252 252 252 252 252 252 252 252 252 251 252 252 252 251 252 252 252 252 252 252 251 252 253 291 332 375 413 252 252 252 252 251 252 252 252 252 251 252 252 252 252 252 252 252 252 252 252 252 252 252 270 321 364 404 444 470 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 251 252 252 252 283 335 382 422 461 481 486 252 252 252 252 252 252 252 252 252 252 252 252 251 252 252 252 252 252 252 252 264 322 374 416 460 485 494 489 485 252 252 252 252 252 252 252 252 252 252 252 252 252 252 252 251 252 252 252 288 346 394 437 477 496 497 490 478 457 252 252 251 252 252 252 252 252 252 252 252 252 252 252 252 252 252 251 306 364 411 454 492 499 495 486 466 453 445 252 252 252 252 252 252 252 251 252 252 252 252 252 252 252 252 252 317 376 422 467 498 498 495 478 460 451 443 436 252 252 251 252 252 252 252 252 252 252 252 251 252 252 252 257 333 387 435 480 499 497 488 467 454 448 443 437 429 252 252 252 252 252 252 252 252 252 252 252 252 252 252 270 341 397 447 490 498 498 482 459 450 446 443 448 446 425 252 251 252 252 252 252 251 252 252 252 252 252 252 253 330 391 442 483 499 500 482 460 450 444 440 448 447 433 420 252 251 252 251 252 252 252 251 252 252 252 252 285 347 406 457 495 501 496 470 455 446 440 434 440 446 420 413 408 252 252 252 252 252 251 252 251 252 252 251 281 352 408 460 497 503 493 467 455 446 438 431 426 438 439 411 405 418 251 251 252 252 251 252 252 252 252 252 256 331 393 447 491 503 497 472 456 447 440 432 425 419 418 437 412 400 404 251 252 252 252 252 252 252 252 252 252 330 390 444 491 504 494 470 455 447 440 433 425 418 413 408 419 423 398 392 252 252 252 252 252 252 252 251 251 316 385 439 487 503 498 470 455 448 440 433 425 418 412 407 401 400 408 410 406 252 251 252 251 251 252 252 251 304 375 432 485 502 499 474 456 448 441 435 426 419 411 405 400 395 390 387 384 381 252 252 251 251 252 252 251 308 378 436 485 502 494 469 455 447 445 437 426 418 411 404 398 393 387 382 376 371 363 251 252 252 252 252 252 293 364 423 475 498 495 470 457 448 442 450 452 422 414 405 398 392 386 381 375 370 363 357 252 252 252 251 252 273 346 411 467 495 495 475 459 452 444 439 432 443 440 411 400 393 387 381 375 369 363 356 351 252 252 252 251 252 314 380 439 485 498 486 464 455 448 445 437 429 423 436 434 401 391 383 376 371 366 359 353 348 252 252 252 252 310 378 438 485 499 484 463 454 448 461 466 458 445 434 432 431 410 385 375 370 365 358 352 347 341 251 252 252 285 358 422 474 498 490 466 458 449 442 441 455 450 434 424 418 413 398 377 370 364 358 353 347 342 337 252 252 252 317 388 447 486 499 476 464 455 447 438 431 427 439 436 407 396 388 380 371 366 360 354 349 343 338 332 252 252 293 366 429 482 501 483 466 457 455 453 433 425 419 414 425 418 389 380 372 364 358 354 348 342 338 332 327 252 262 339 409 467 501 493 470 459 451 452 460 442 421 413 405 400 402 385 372 365 358 352 348 342 337 332 327 322 252 331 402 460 499 496 472 460 451 443 437 441 445 423 404 396 388 381 372 364 356 351 345 340 335 329 325 321 315 303 376 438 494 497 478 465 455 445 438 430 424 428 431 409 390 381 373 365 358 350 345 339 334 329 324 320 315 310 348 417 477 497 489 471 459 449 439 431 423 417 410 412 410 387 375 367 359 352 345 339 333 328 323 319 315 309 304 391 454 497 499 476 464 453 444 434 425 417 410 403 396 389 377 368 360 353 346 339 334 328 322 318 314 309 305 300 413 474 500 492 472 461 450 441 431 422 413 406 399 391 382 373 364 357 349 342 335 329 324 318 314 309 305 301 296 461 502 495 474 463 452 442 432 424 415 406 399 390 382 373 365 357 349 342 335 328 323 318 313 308 304 300 294 290 492 505 481 468 457 446 437 427 419 410 402 393 385 376 367 359 351 344 337 331 324 319 313 308 304 297 294 289 286 500 501 477 464 454 444 433 425 415 406 398 390 381 372 363 355 347 340 333 327 321 315 309 304 298 295 290 286 281 505 481 468 455 446 435 427 417 408 400 390 382 373 364 356 348 340 334 327 321 314 309 303 299 293 288 284 281 277 495 474 461 451 441 431 422 412 403 394 386 376 367 358 350 343 335 328 323 316 309 304 299 295 289 284 280 277 274 481 468 457 446 435 426 417 407 399 389 381 371 362 353 346 338 330 324 318 312 305 300 295 290 285 280 277 273 271 474 462 451 441 431 422 412 403 393 384 375 365 357 349 341 333 327 320 314 307 301 296 291 286 282 277 274 270 269 469 457 446 437 427 417 408 398 388 380 370 361 353 344 335 329 322 316 309 304 298 292 287 282 278 274 272 268 265 463 453 443 432 422 413 404 394 385 375 366 356 348 339 332 324 317 311 306 299 294 288 284 280 276 272 268 266 263 462 451 442 431 421 411 402 393 382 373 363 354 346 337 330 322 315 309 303 297 292 286 282 278 274 271 267 265 261 455 445 434 424 414 405 396 386 375 366 356 348 340 331 323 317 310 304 298 291 287 282 278 273 270 267 264 261 258 453 444 432 423 413 403 393 384 374 364 354 346 337 330 322 314 308 302 296 290 284 280 276 272 268 265 263 260 258 447 438 427 417 407 397 387 374 367 357 348 340 332 324 317 310 303 297 291 286 281 277 272 269 266 262 259 257 255 444 434 423 413 403 393 383 373 363 354 345 337 329 321 314 307 301 295 289 283 278 275 270 267 263 261 259 256 253 441 431 420 410 399 389 380 369 360 351 342 333 325 317 311 304 298 292 286 281 276 272 268 264 262 259 257 254 253 440 429 419 408 399 389 379 368 358 349 340 332 325 317 310 303 297 291 285 280 275 272 268 265 261 258 256 254 253 434 423 413 402 393 382 372 362 353 344 336 328 321 313 306 300 293 287 282 278 273 270 266 262 260 256 254 253 253 430 420 410 400 389 379 369 359 349 343 333 325 317 310 304 297 291 286 280 276 272 268 264 261 258 255 254 253...

2   Pass
% Low Image Signal load penny.mat; Timg=double(P); Timg=Timg+50; [nr nc]=size(Timg); obscuration=zeros(1,nc); widthL=16; widthR=12; maxobsL=.08; maxobsR=.12; % ObscurationLinear obscuration(1:1+widthL)=maxobsL*(widthL-(0:widthL))/widthL; obscuration(end:-1:end-widthR)=maxobsR*(widthR-(0:widthR))/widthR; Vimg=bsxfun(@times,Timg,1-obscuration); % Processing Fimg=Vignette_fix(Vimg,obscuration); % % Verification tolerance=[0.01 1]; Pass=1; % Hi check tcheck=(Timg*(1+tolerance(1))+tolerance(2))-Fimg; if min(tcheck(:))<0,Pass=0;end % Lo check tcheck=Fimg-(Timg*(1-tolerance(1))-tolerance(2)); if min(tcheck(:))<0,Pass=0;end assert(isequal(Pass,1))

Fimg = Columns 1 through 29 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 51 52 52 52 52 52 52 52 52 52 52 52 52 52 53 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 51 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 51 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 51 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 51 52 52 52 52 52 52 52 52 52 52 52 52 52 52 51 52 51 52 52 52 52 52 52 52 52 51 52 52 52 52 52 52 51 63 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 54 95 138 52 52 52 52 52 52 52 52 52 52 52 51 52 52 52 51 52 52 52 52 52 52 51 52 53 91 132 175 213 52 52 52 52 51 52 52 52 52 51 52 52 52 52 52 52 52 52 52 52 52 52 52 70 121 164 204 244 270 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 51 52 52 52 83 135 182 222 261 281 286 52 52 52 52 52 52 52 52 52 52 52 52 51 52 52 52 52 52 52 52 64 122 174 216 260 285 294 289 285 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 51 52 52 52 88 146 194 237 277 296 297 290 278 257 52 52 51 52 52 52 52 52 52 52 52 52 52 52 52 52 52 51 106 164 211 254 292 299 295 286 266 253 245 52 52 52 52 52 52 52 51 52 52 52 52 52 52 52 52 52 117 176 222 267 298 298 295 278 260 251 243 236 52 52 51 52 52 52 52 52 52 52 52 51 52 52 52 57 133 187 235 280 299 297 288 267 254 248 243 237 229 52 52 52 52 52 52 52 52 52 52 52 52 52 52 70 141 197 247 290 298 298 282 259 250 246 243 248 246 225 52 51 52 52 52 52 51 52 52 52 52 52 52 53 130 191 242 283 299 300 282 260 250 244 240 248 247 233 220 52 51 52 51 52 52 52 51 52 52 52 52 85 147 206 257 295 301 296 270 255 246 240 234 240 246 220 213 208 52 52 52 52 52 51 52 51 52 52 51 81 152 208 260 297 303 293 267 255 246 238 231 226 238 239 211 205 218 51 51 52 52 51 52 52 52 52 52 56 131 193 247 291 303 297 272 256 247 240 232 225 219 218 237 212 200 204 51 52 52 52 52 52 52 52 52 52 130 190 244 291 304 294 270 255 247 240 233 225 218 213 208 219 223 198 192 52 52 52 52 52 52 52 51 51 116 185 239 287 303 298 270 255 248 240 233 225 218 212 207 201 200 208 210 206 52 51 52 51 51 52 52 51 104 175 232 285 302 299 274 256 248 241 235 226 219 211 205 200 195 190 187 184 181 52 52 51 51 52 52 51 108 178 236 285 302 294 269 255 247 245 237 226 218 211 204 198 193 187 182 176 171 163 51 52 52 52 52 52 93 164 223 275 298 295 270 257 248 242 250 252 222 214 205 198 192 186 181 175 170 163 157 52 52 52 51 52 73 146 211 267 295 295 275 259 252 244 239 232 243 240 211 200 193 187 181 175 169 163 156 151 52 52 52 51 52 114 180 239 285 298 286 264 255 248 245 237 229 223 236 234 201 191 183 176 171 166 159 153 148 52 52 52 52 110 178 238 285 299 284 263 254 248 261 266 258 245 234 232 231 210 185 175 170 165 158 152 147 141 51 52 52 85 158 222 274 298 290 266 258 249 242 241 255 250 234 224 218 213 198 177 170 164 158 153 147 142 137 52 52 52 117 188 247 286 299 276 264 255 247 238 231 227 239 236 207 196 188 180 171 166 160 154 149 143 138 132 52 52 93 166 229 282 301 283 266 257 255 253 233 225 219 214 225 218 189 180 172 164 158 154 148 142 138 132 127 52 62 139 209 267 301 293 270 259 251 252 260 242 221 213 205 200 202 185 172 165 158 152 148 142 137 132 127 122 52 131 202 260 299 296 272 260 251 243 237 241 245 223 204 196 188 181 172 164 156 151 145 140 135 129 125 121 115 103 176 238 294 297 278 265 255 245 238 230 224 228 231 209 190 181 173 165 158 150 145 139 134 129 124 120 115 110 148 217 277 297 289 271 259 249 239 231 223 217 210 212 210 187 175 167 159 152 145 139 133 128 123 119 115 109 104 191 254 297 299 276 264 253 244 234 225 217 210 203 196 189 177 168 160 153 146 139 134 128 122 118 114 109 105 100 213 274 300 292 272 261 250 241 231 222 213 206 199 191 182 173 164 157 149 142 135 129 124 118 114 109 105 101 96 261 302 295 274 263 252 242 232 224 215 206 199 190 182 173 165 157 149 142 135 128 123 118 113 108 104 100 94 90 292 305 281 268 257 246 237 227 219 210 202 193 185 176 167 159 151 144 137 131 124 119 113 108 104 97 94 89 86 300 301 277 264 254 244 233 225 215 206 198 190 181 172 163 155 147 140 133 127 121 115 109 104 98 95 90 86 81 305 281 268 255 246 235 227 217 208 200 190 182 173 164 156 148 140 134 127 121 114 109 103 99 93 88 84 81 77 295 274 261 251 241 231 222 212 203 194 186 176 167 158 150 143 135 128 123 116 109 104 99 95 89 84 80 77 74 281 268 257 246 235 226 217 207 199 189 181 171 162 153 146 138 130 124 118 112 105 100 95 90 85 80 77 73 71 274 262 251 241 231 222 212 203 193 184 175 165 157 149 141 133 127 120 114 107 101 96 91 86 82 77 74 70 69 269 257 246 237 227 217 208 198 188 180 170 161 153 144 135 129 122 116 109 104 98 92 87 82 78 74 72 68 65 263 253 243 232 222 213 204 194 185 175 166 156 148 139 132 124 117 111 106 99 94 88 84 80 76 72 68 66 63 262 251 242 231 221 211 202 193 182 173 163 154 146 137 130 122 115 109 103 97 92 86 82 78 74 71 67 65 61 255 245 234 224 214 205 196 186 175 166 156 148 140 131 123 117 110 104 98 91 87 82 78 73 70 67 64 61 58 253 244 232 223 213 203 193 184 174 164 154 146 137 130 122 114 108 102 96 90 84 80 76 72 68 65 63 60 58 247 238 227 217 207 197 187 174 167 157 148 140 132 124 117 110 103 97 91 86 81 77 72 69 66 62 59 57 55 244 234 223 213 203 193 183 173 163 154 145 137 129 121 114 107 101 95 89 83 78 75 70 67 63 61 59 56 53 241 231 220 210 199 189 180 169 160 151 142 133 125 117 111 104 98 92 86 81 76 72 68 64 62 59 57 54 53 240 229 219 208 199 189 179 168 158 149 140 132 125 117 110 103 97 91 85 80 75 72 68 65 61 58 56 54 53 234 223 213 202 193 182 172 162 153 144 136 128 121 113 106 100 93 87 82 78 73 70 66 62 60 56 54 53 53 230 220 210 200 189 179 169 159 149 143 133 125 117 110 104 97 91 86 80 76 72 68 64 61 58 55 54 53...

3   Pass
%Timg = double(imread('concordorthophoto.png')); % Matlab full image Timg =double(imread('example.tif')); % NGC 6543 Timg=Timg(1:512,1:512); Timg=Timg+400; % Nominal 20 [nr nc]=size(Timg); obscuration=zeros(1,nc); widthL=48; widthR=40; maxobsL=.2; % chan 1 Vig = 0.1842 maxobsR=.15; % Chan 512 Vig = 0.1359 % Obscuration 4th order obscuration(1:1+widthL)=maxobsL*(((1:1+widthL)-(1+widthL)).^4/(widthL+1)^4); obscuration(end-widthR:end)=maxobsR*(((widthR+1:-1:1)-(1+widthR)).^4/(widthR+1)^4); Vimg=bsxfun(@times,Timg,1-obscuration); % Processing Fimg=Vignette_fix(Vimg,obscuration); % % Verification tolerance=[0.01 1]; Pass=1; % Hi check tcheck=(Timg*(1+tolerance(1))+tolerance(2))-Fimg; if min(tcheck(:))<0,Pass=0;end % Lo check tcheck=Fimg-(Timg*(1-tolerance(1))-tolerance(2)); if min(tcheck(:))<0,Pass=0;end assert(isequal(Pass,1))

Fimg = Columns 1 through 29 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 401 401 401 401 401 401 401 401 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 401 401 401 401 401 401 401 401 400 400 400 400 400 400 400 400 400 400 400 400 400 401 401 401 401 401 401 401 401 402 402 402 402 402 402 402 402 401 401 401 401 401 400 400 400 400 400 400 400 400 401 401 401 401 401 401 401 401 402 402 402 402 402 402 402 402 401 401 401 401 401 400 400 400 400 400 400 400 400 401 401 401 401 401 401 401 401 402 402 402 402 402 402 402 402 401 401 401 401 401 400 400 400 400 400 400 400 400 400 400 400 401 401 402 402 402 401 401 401 401 401 401 401 401 401 401 401 401 401 400 400 400 400 400 400 400 400 400 400 400 401 401 402 402 402 401 401 401 401 401 401 401 401 401 401 401 401 401 400 400 400 400 400 400 400 400 400 400 400 401 401 402 402 402 401 401 401 401 401 401 401 401 401 401 401 401 401 400 400 400 400 400 400 400 400 400 400 400 401 401 402 402 402 401 401 401 401 401 401 401 401 401 401 401 401 401 400 400 400 400 400 400 400 400 400 400 400 401 401 402 402 402 401 401 401 401 401 401 401 401 401 401 401 401 401 400 400 400 400 400 400 400 400 400 400 400 401 401 402 402 402 401 401 401 401 401 401 401 401 401 401 401 401 401 400 400 400 400 400 400 400 400 400 400 400 401 401 402 402 402 401 401 401 401 401 401 401 401 401 401 401 401 401 400 400 400 400 400 400 400 400 400 400 400 401 401 402 402 402 401 401 401 401 401 401 401 401 401 401 401 401 401 400 400 400 400 400 400 400 400 400 400 400 401 401 402 402 402 401 401 401 401 401 401 401 401 401 401 401 401 401 400 400 400 400 400 400 400 400 400 400 400 401 401 402 402 402 401 401 401 401 401 401 401 401 401 401 401 401 401 400 400 400 400 400 400 400 400 400 400 400 401 401 402 402 402 401 401 401 401 401 401 401 401 401 401 401 401 401 400 400 400 400 400 400 400 400 400 400 400 401 401 402 402 402 401 401 401 401 401 401 401 401 401 401 401 401 401 400 400 400 400 400 400 400 400 400 400 400 401 401 402 402 402 401 401 401 401 401 401 401 401 401 401 401 401 401 400 400 400 400 400 400 400 400 400 400 400 401 401 402 402 402 401 401 401 401 401 401 401 401 401 401 401 401 401 400 400 400 400 400 400 400 400 400 400 400 401 401 402 402 402 401 401 401 401 401 401 401 401 401 401 401 401 401 400 400 400 400 400 400 400 400 400 400 400 401 401 402 402 402 401 401 401 401 401 401 401 401 401 401 401 401 401 400 400 400 400 400 400 400 400 400 400 400 401 401 402 402 402 401 401 401 401 401 401 401 401 401 401 401 401 401 400 400 400 400 400 400 400 400 400 400 400 401 401 402 402 402 401 401 401 401 401 401 401 401 401 401 401 401 401 400 400 400 400 400 400 400 400 400 400 400 401 401 402 402 402 401 401 401 401 401 401 401 401 401 401 401 401 401 400 400 400 400 400 400 400 400 400 400 400 401 401 402 402 402 401 401 401 401 401 401 401 401 401 401 401 401 401 400 400 400 400 400 400 400 400 400 400 400 401 401 402 402 402 401 401 401 401 401 401 401 401 401 401 401 401 401 400 400 400 400 400 400 400 400 400 400 400 401 401 402 402 402 401 401 401 401 401 401 401 401 401 401 401 401 401 400 400 400 400 400 400 400 400 400 400 400 401 401 402 402 402 401 401 401 401 401 401 401 401 401 401 401 401 401 400 400 400 400 400 400 400 400 400 400 400 401 401 402 402 402 401 401 401 401 401 401 401 401 401 401 401 401 401 400 400 400 400 400 400 400 400 400 400 400 401 401 402 402 402 401 401 401 401 401 401 401 401 401 401 401 401 401 400 400 400 400 400 400 400 400 400 400 400 401 401 402 402 402 401 401 401 401 401 401 401 401 401 401 401 401 401 400 400 400 400 400 400 400 400 400 400 400 401 401 402 402 402 401 401 401 401 401 401 401 401 401 401 401 401 401 400 400 400 400 400 400 400 400 400 400 400 401 401 402 402 402 401 401 401 401 401 401 401 401 401 401 401 401 401 400 400 400 400 400 400 400 400 400 400 400 401 401 402 402 402 401 401 401 401 401 401 401 401 401 401 401 401 401 400 400 400 400 400 400 400 400 400 400 400 401 401 402 402 402 401 401 401 401 401 401 401 401 401 401 401 401 401 400 400 400 400 400 400 400 400 400 400 400 401 401 402 402 402 401 401 401 401 401 401 401 401 401 401 401 401 401 400 400 400 400 400 400 400 400 400 400 400 401 401 402 402 402 401 401 401 401 401 401 401 401 401 401 401 401 401 400 400 400 400 400 400 400 400 400 400 400 401 401 402 402 402 401 401 401 401 401 401 401 401 401 401 401 401 401 400 400 400 400 400 400 400 400 400 400 400 401 401 402 402 402 401 401 401 401 401 401 401 401 401 401 401 401 401 400 400 400 400 400 400 400 400 400 400 400 401 401 402 402 402 401 401 401 401 401 401 401 401 401 401 401 401 401 400 400 400 400 400 400 400 400 400 400 400 401 401 402 402 402 401 401 401 401 401 401 401 401 401 401 401 401 401 400 400 400 400 400 400 400 400 400 400 400 401 401 402 402 402 401 401 401 401 401 401 401 401 401 401 401 401 401 400 400 400 400 400 400 400 400 400 400 400 401 401 402 402 402 401 401 401 401 401 401 401 401 401 401 401 401 401 400 400 400 400 400 400 400 400 400 400 400 401 401 402 402 402 401 401 401 401 401 401 401 401 401 401 401 401 401 400 400 400 400 400 400 400 400 400 400 400 401 401 402 402 402 401 401 401 401 401 401 401 401 401 401 401 401 401 400 400 400 400 400 400 400 400 400 400 400 401 401 402 402 402 401 401 401 401 401 401 401 401 401 401 401 401...

4   Pass
% Timg = double(imread('concordorthophoto.png')); % Matlab full image %Timg=Timg(1600:2111,900:1411); Timg =double(imread('example.tif')); % NGC 6543 Timg=Timg(31:542,81:592); Timg=Timg+300; [nr nc]=size(Timg); obscuration=zeros(1,nc); widthL=42; widthR=36; maxobsL=.18; % maxobsR=.23; % % Obscuration Linear obscuration(1:1+widthL)=maxobsL*(widthL-(0:widthL))/widthL; obscuration(end:-1:end-widthR)=maxobsR*(widthR-(0:widthR))/widthR; Vimg=bsxfun(@times,Timg,1-obscuration); % Processing Fimg=Vignette_fix(Vimg,obscuration); % % Verification tolerance=[0.01 1]; Pass=1; % Hi check tcheck=(Timg*(1+tolerance(1))+tolerance(2))-Fimg; if min(tcheck(:))<0,Pass=0;end % Lo check tcheck=Fimg-(Timg*(1-tolerance(1))-tolerance(2)); if min(tcheck(:))<0,Pass=0;end assert(isequal(Pass,1))

Fimg = Columns 1 through 29 301 301 301 301 301 301 301 301 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 301 301 301 301 301 301 301 301 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 303 303 303 302 302 301 301 301 301 301 301 301 301 301 301 301 300 300 300 300 300 300 300 300 301 301 301 301 301 303 303 303 302 302 301 301 301 301 301 301 301 301 301 301 301 300 300 300 300 300 300 300 300 301 301 301 301 301 303 303 303 302 302 301 301 301 301 301 301 301 301 301 301 301 300 300 300 300 300 300 300 300 301 301 301 301 301 303 303 303 302 302 301 301 301 301 301 301 301 301 301 301 301 300 300 300 300 300 300 300 300 301 301 301 301 301 303 303 303 302 302 301 301 301 301 301 301 301 301 301 301 301 300 300 300 300 300 300 300 300 301 301 301 301 301 303 303 303 302 302 301 301 301 301 301 301 301 301 301 301 301 300 300 300 300 300 300 300 300 301 301 301 301 301 303 303 303 302 302 301 301 301 301 301 301 301 301 301 301 301 300 300 300 300 300 300 300 300 301 301 301 301 301 303 303 303 302 302 301 301 301 301 301 301 301 301 301 301 301 300 300 300 300 300 300 300 300 301 301 301 301 301 302 302 302 302 302 302 302 302 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 302 302 302 302 302 302 302 302 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 302 302 302 302 302 302 302 302 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 302 302 302 302 302 302 302 302 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 302 302 302 302 302 302 302 302 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 302 302 302 302 302 302 302 302 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 302 302 302 302 302 302 302 302 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 302 302 302 302 302 302 302 302 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 302 302 302 302 302 302 302 302 300 300 300 300 300 300 300 300 301 301 301 301 301 301 301 301 301 301 301 301 301 302 302 302 302 302 302 302 302 300 300 300 300 300 300 300 300 301 301 301 301 301 301 301 301 301 301 301 301 301 302 302 302 302 302 302 302 302 300 300 300 300 300 300 300 300 301 301 301 301 301 301 301 301 301 301 301 301 301 302 302 302 302 302 302 302 302 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 302 302 302 302 302 302 302 302 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 302 302 302 302 302 302 302 302 302 302 302 302 302 302 302 302 301 301 301 301 301 301 301 301 301 301 301 301 301 302 302 302 302 302 302 302 302 302 302 302 302 302 302 302 302 301 301 301 301 301 301 301 301 301 301 301 301 301 302 302 302 302 302 302 302 302 302 302 302 302 302 302 302 302 301 301 301 301 301 301 301 301 301 301 301 301 301 302 302 302 302 302 302 302 302 302 302 302 302 302 302 302 302 301 301 301 300 300 300 300 300 301 301 301 301 301 302 302 302 302 302 302 302 302 302 302 302 302 302 302 302 302 301 301 301 300 300 300 300 300 301 301 301 301 301 302 302 302 302 302 302 302 302 302 302 302 302 302 302 302 302 301 301 301 301 300 300 300 300 301 301 301 301 301 302 302 302 302 302 302 302 302 302 302 302 302 302 302 302 302 302 302 301 301 301 300 300 300 301 301 301 301 301 302 302 302 302 302 302 302 302 302 302 302 302 302 302 302 302 302 302 302 301 301 301 300 300 301 301 301 301 301 302 302 302 302 302 302 302 302 302 302 302 302 302 302 302 302 303 302 302 302 301 301 301 301 301 301 301 301 301 302 302 302 302 302 302 302 302 302 302 302 302 302 302 302 302 303 303 302 302 302 301 301 301 301 301 301 301 301 302 302 302 302 302 302 302 302 302 302 302 302 302 302 302 302 303 303 303 302 302 301 301 301 301 301 301 301 301 301 301 301 302 302 303 303 303 302 302 301 301 301 302 303 303 302 302 302 302 302 302 302 302 301 301 301 301 301 301 301 301 302 302 303 303 303 303 302 302 301 301 302 302 303 302 302 302 302 302 302 302 302 301 301 301 301 301 301 301 301 302 302 303 303 303 303 303 302 301 301 302 302 303 302 302 302 302 302 302 302 302 301 301 301 301 301 301 301 301 302 302 303 303 303 304 303 302 301 301 301 302 302 302 302 302 302 302 302 302 302 301 301 301 301 301 301 301 301 302 302 303 303 303 304 303 302 301 301 301 301 301 302 302 302 302 302 302 302 302 301 301 301 301 301 301 301 301 302 302 303 303 303 305 304 303 302 301 301 301 301 302 302 302 302 302 302 302 302 301 301 301 301 301 301 301 301 302 302 303 303 303 305 304 303 302 301 300 300 301 302 302 302 302 302 302 302 302 301 301 301 301 301 301 301 301 302 302 303 303 303 305 304 303 302 301 300 300 300 302 302 302 302 302 302 302 302 301 301 301 301 301 301 301 301 302 302 303 303 303 302 303 303 301 300 300 302 305 301 301 301 301 301 301 301 301 302 302 302 302 302 301 301 301 302 302 303 303 303 303 304 304 303 301 300 302 303 301 301 301 301 301 301 301 301 302 302 302 302 302 301 301 301 302 302 303 303 303 305 306 307 306 303 301 301 301 301 301 301 301 301 301 301 301 302 302 302 302 302 301 301 301 302 302 303 303 303 306 308 310 308 305 302 300 300 301 301 301 301 301 301 301 301 302 302 302 302 302 301 301 301 302 302 303 303 303 307 309 310 309 305 302 300 300 301 301 301 301 301 301 301 301 302 302 302 302 302 301 301 301 302 302 303 303 303 308 309 309 307 304 301 301 301 301 301 301 301 301 301 301 301 302 302 302 302 302 301 301 301 302 302 303 303 303 308 308 308 305 302 301 301 303 301 301 301 301 301 301 301 301 302 302 302 302...

Suggested Problems

More from this Author246

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!