Changeset 10877 for ImageMagick/trunk
- Timestamp:
- 05/11/08 08:07:40 (4 months ago)
- Location:
- ImageMagick/trunk
- Files:
-
- 5 modified
-
ChangeLog (modified) (1 diff)
-
magick/color.c (modified) (4 diffs)
-
magick/enhance.c (modified) (3 diffs)
-
magick/fx.c (modified) (2 diffs)
-
magick/pixel-private.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
ImageMagick/trunk/ChangeLog
r10872 r10877 1 2008-05-09 6.4.1-2 Leonardo de Paula Rosa Piga <lpiga@terra...> 2 * OpenMP patch for sepia-tone effect. 3 1 4 2008-05-08 6.4.1-2 Bruno Cardoso Lopes <bruno.cardoso@gmail...> 2 5 * OpenMP patch for NormalizeImage() & TintImage() -
ImageMagick/trunk/magick/color.c
r10751 r10877 1805 1805 for (x=0; x < (long) image->columns; x++) 1806 1806 { 1807 if ( (p->red != p->green) || (p->green != p->blue))1807 if (IsGrayPixel(p) == MagickFalse) 1808 1808 break; 1809 1809 p++; … … 1820 1820 for (i=0; i < (long) image->colors; i++) 1821 1821 { 1822 if ( (p->red != p->green) || (p->green != p->blue))1822 if (IsGrayPixel(p) == MagickFalse) 1823 1823 break; 1824 1824 p++; … … 2275 2275 for (x=0; x < (long) image->columns; x++) 2276 2276 { 2277 if ((p->red != p->green) || (p->green != p->blue)) 2278 break; 2279 if ((p->red != 0) && (p->red != (Quantum) QuantumRange)) 2277 if (IsMonochromePixel(p) == MagickFalse) 2280 2278 break; 2281 2279 p++; … … 2292 2290 for (i=0; i < (long) image->colors; i++) 2293 2291 { 2294 if ((p->red != p->green) || (p->green != p->blue)) 2295 break; 2296 if ((p->red != 0) && (p->red != (Quantum) QuantumRange)) 2292 if (IsMonochromePixel(p) == MagickFalse) 2297 2293 break; 2298 2294 p++; -
ImageMagick/trunk/magick/enhance.c
r10873 r10877 298 298 299 299 MagickBooleanType 300 status; 300 status, 301 sync_image_retval = MagickTrue; 302 303 ViewInfo *image_view; 301 304 302 305 register long … … 306 309 register PixelPacket 307 310 *q; 311 308 312 309 313 assert(image != (Image *) NULL); … … 324 328 Contrast enhance image. 325 329 */ 326 for (y=0; y < (long) image->rows; y++) 330 image_view=OpenCacheView(image); 331 332 #pragma omp parallel private(y, x, q) firstprivate(sync_image_retval, image_view) 327 333 { 328 q=GetImagePixels(image,0,y,image->columns,1); 329 if (q == (PixelPacket *) NULL) 330 break; 331 for (x=0; x < (long) image->columns; x++) 332 { 333 Contrast(sign,&q->red,&q->green,&q->blue); 334 q++; 335 } 336 if (SyncImagePixels(image) == MagickFalse) 337 break; 338 if ((image->progress_monitor != (MagickProgressMonitor) NULL) && 339 (QuantumTick(y,image->rows) != MagickFalse)) 340 { 341 status=image->progress_monitor(sharpen != MagickFalse ? 342 SharpenContrastImageTag : DullContrastImageTag,y,image->rows, 343 image->client_data); 344 if (status == MagickFalse) 345 break; 346 } 334 #pragma omp for ordered 335 for (y=0; y < (long) image->rows; y++) 336 { 337 #pragma omp critical 338 q=GetCacheViewPixels(image_view,0,y,image->columns,1); 339 if (q == (PixelPacket *) NULL) 340 continue; 341 for (x=0; x < (long) image->columns; x++) 342 { 343 Contrast(sign,&q->red,&q->green,&q->blue); 344 q++; 345 } 346 #pragma omp critical 347 { 348 sync_image_retval = SyncCacheView(image_view); 349 } /* end omp critical*/ 350 if (sync_image_retval == MagickFalse) 351 continue; 352 if ((image->progress_monitor != (MagickProgressMonitor) NULL) && 353 (QuantumTick(y,image->rows) != MagickFalse)) 354 { 355 status=image->progress_monitor(sharpen != MagickFalse ? 356 SharpenContrastImageTag : DullContrastImageTag,y,image->rows, 357 image->client_data); 358 if (status == MagickFalse) 359 continue; 360 } 361 } 347 362 } 348 363 return(MagickTrue); -
ImageMagick/trunk/magick/fx.c
r10872 r10877 3220 3220 *q; 3221 3221 3222 ViewInfo 3223 *image_view, 3224 *sepia_view; 3225 3222 3226 /* 3223 3227 Initialize sepia-toned image attributes. … … 3241 3245 Tone each row of the image. 3242 3246 */ 3243 for (y=0; y < (long) image->rows; y++)3247 #pragma omp parallel private(image_view, intensity, p, q, sepia_view, tone, x, y) 3244 3248 { 3245 p=AcquireImagePixels(image,0,y,image->columns,1,exception); 3246 q=SetImagePixels(sepia_image,0,y,sepia_image->columns,1); 3247 if ((p == (const PixelPacket *) NULL) || (q == (PixelPacket *) NULL)) 3248 break; 3249 for (x=0; x < (long) image->columns; x++) 3250 { 3251 intensity=(MagickRealType) PixelIntensityToQuantum(p); 3252 tone=intensity > threshold ? (MagickRealType) QuantumRange : 3253 intensity+(MagickRealType) QuantumRange-threshold; 3254 q->red=RoundToQuantum(tone); 3255 tone=intensity > (7.0*threshold/6.0) ? (MagickRealType) QuantumRange : 3256 intensity+(MagickRealType) QuantumRange-7.0*threshold/6.0; 3257 q->green=RoundToQuantum(tone); 3258 tone=intensity < (threshold/6.0) ? 0 : intensity-threshold/6.0; 3259 q->blue=RoundToQuantum(tone); 3260 tone=threshold/7.0; 3261 if ((MagickRealType) q->green < tone) 3262 q->green=RoundToQuantum(tone); 3263 if ((MagickRealType) q->blue < tone) 3264 q->blue=RoundToQuantum(tone); 3265 p++; 3266 q++; 3267 } 3268 if (SyncImagePixels(sepia_image) == MagickFalse) 3269 break; 3270 if ((image->progress_monitor != (MagickProgressMonitor) NULL) && 3271 (QuantumTick(y,image->rows) != MagickFalse)) 3249 image_view=OpenCacheView(image); 3250 sepia_view=OpenCacheView(sepia_image); 3251 #pragma omp for 3252 for (y=0; y < (long) image->rows; y++) 3253 { 3254 p=AcquireCacheViewPixels(image_view,0,y,image->columns,1,exception); 3255 q=SetCacheView(sepia_view,0,y,sepia_image->columns,1); 3256 if ((p == (const PixelPacket *) NULL) || (q == (PixelPacket *) NULL)) 3257 continue; 3258 #pragma omp for 3259 for (x=0; x < (long) image->columns; x++) 3272 3260 { 3273 status=image->progress_monitor(SepiaToneImageTag,y,image->rows, 3274 image->client_data); 3275 if (status == MagickFalse) 3276 break; 3261 intensity=(MagickRealType) PixelIntensityToQuantum(p+x); 3262 tone=intensity > threshold ? (MagickRealType) QuantumRange : 3263 intensity+(MagickRealType) QuantumRange-threshold; 3264 (q+x)->red=RoundToQuantum(tone); 3265 tone=intensity > (7.0*threshold/6.0) ? (MagickRealType) QuantumRange : 3266 intensity+(MagickRealType) QuantumRange-7.0*threshold/6.0; 3267 (q+x)->green=RoundToQuantum(tone); 3268 tone=intensity < (threshold/6.0) ? 0 : intensity-threshold/6.0; 3269 (q+x)->blue=RoundToQuantum(tone); 3270 tone=threshold/7.0; 3271 if ((MagickRealType) (q+x)->green < tone) 3272 (q+x)->green=RoundToQuantum(tone); 3273 if ((MagickRealType) (q+x)->blue < tone) 3274 (q+x)->blue=RoundToQuantum(tone); 3277 3275 } 3276 if (SyncCacheView(sepia_view) == MagickFalse) 3277 continue; 3278 if ((image->progress_monitor != (MagickProgressMonitor) NULL) && 3279 (QuantumTick(y,image->rows) != MagickFalse)) 3280 { 3281 status=image->progress_monitor(SepiaToneImageTag,y,image->rows, 3282 image->client_data); 3283 if (status == MagickFalse) 3284 continue; 3285 } 3286 } 3287 sepia_view=CloseCacheView(sepia_view); 3288 image_view=CloseCacheView(image_view); 3278 3289 } 3279 3290 (void) NormalizeImage(sepia_image); -
ImageMagick/trunk/magick/pixel-private.h
r10750 r10877 38 38 } RealPixelPacket; 39 39 40 static inline MagickBooleanType IsGrayPixel(const PixelPacket *pixel)41 {42 if ((pixel->red == pixel->green) && (pixel->green == pixel->blue))43 return(MagickTrue);44 return(MagickFalse);45 }46 47 40 static inline MagickPixelPacket *CloneMagickPixelPacket( 48 41 const MagickPixelPacket *pixel) … … 56 49 *clone_pixel=(*pixel); 57 50 return(clone_pixel); 51 } 52 53 static inline MagickBooleanType IsGrayPixel(const PixelPacket *pixel) 54 { 55 #if !defined(MAGICKCORE_HDRI_SUPPORT) 56 if ((pixel->red == pixel->green) && (pixel->green == pixel->blue)) 57 return(MagickTrue); 58 #else 59 if ((fabs(pixel->red-pixel->green) > MagickEpsilon) && 60 (fabs(pixel->green-pixel->blue) > MagickEpsilon)) 61 return(MagickTrue); 62 #endif 63 return(MagickFalse); 64 } 65 66 static inline MagickBooleanType IsMonochromePixel(const PixelPacket *pixel) 67 { 68 #if !defined(MAGICKCORE_HDRI_SUPPORT) 69 if (((pixel->red == 0) || (pixel->red == QuantumRange)) && 70 (pixel->red == pixel->green) && (pixel->green == pixel->blue)) 71 return(MagickTrue); 72 #else 73 if (((fabs(pixel->red) <= MagickEpsilon) || 74 (fabs(pixel->red-QuantumRange) <= MagickEpsilon)) && 75 (fabs(pixel->red-pixel->green) > MagickEpsilon) && 76 (fabs(pixel->green-pixel->blue) > MagickEpsilon)) 77 return(MagickTrue); 78 #endif 79 return(MagickFalse); 58 80 } 59 81
