TweetFollow Us on Twitter





[IMAGE DaveJ.gif]

Digital image processing has come a very long way. Remember when MacPaint® was a revolutionary concept? Now we've got a plethora of sophisticated graphics programs available on the Macintosh for regular folks: 32-bit painting programs, image-processing programs, CAD programs, photo-realistic rendering programs, solid modeling programs, animation programs--you name it. The power to be your best, or the power to run off into the weeds? I guess it depends on who's at the keyboard. One thing is sure: art will never be the same.

I've been messing around lately with digital filtering of scanned images: taking an existing image and applying some sort of mathematical transformation to it. The results are sometimes funny, sometimes beautiful, often ugly, but always fun.

One of the programs I've been spending time with lets you interactively type in mathematical expressions and apply them to an image. This application, called Pico, is a Macintosh implementation of an image-processing language developed by Gerard J. Holzmann at AT&T Bell Laboratories, and described in his bookBeyond Photography: The Digital Darkroom.  (The Macintosh version I've been using was written by John W. Peterson here at Apple, and I've included it on theDeveloper CD Series  disc so that you can play with it, too.) If you're the least bit interested in image processing, you should read Holzmann's slim, friendly book. It describes the language in detail and gives lots of examples of its use. The book is full of fascinating photographs that have been tweaked and transformed using the language, ranging from the hilarious (in particular, see the Einstein caricature on page 35), to the sublimely beautiful (make up your own mind). The overall feel is one of whimsy and fun, with a strong dose of the joy of discovery. The book also includes a very instructive and in- depth discussion of the software that implements the language (a lexical analyzer, a recursive-descent parser, and an interpreter) and source code in C.

Holzmann's language allows you to invent, implement, and try out digital filters on the fly. It uses a C-like syntax and is decidedly mathematical, but that's where a lot of the fun comes in: seeing a photographic image quickly transformed by a simple mathematical formula is really fascinating. The language makes it easy to mess around and discover unusual things about math and filters: you can just type in an expression, hit the Enter key, and see the results immediately. The program operates only on 8-bit gray-scale images that are 256 by 256 pixels, but the power of the language far outshines this limitation. Try it, you'll like it.

There's another kind of digital filtering that I first learned about a little over a year ago in an article by Paul Haeberli at Silicon Graphics:Paint By Numbers: Abstract Image Representations , in the SIGGRAPH '90 Conference Proceedings. This is an interactive kind of filtering, which makes it a lot of fun. The concept is simple: Start with a given image, any image (call it the source). Create a new, blank one (the destination) that's the same size. Then you "paint" on the destination with the mouse, and at each point you touch, the color of the source image is determined at that same location. A"brush stroke" is then drawn in the destination at that position, with the source's color. If the brush just drew single pixels, you would be copying the source image exactly, which would be a pretty tedious way to copy it. Ah, but the brush can do anything it wants to, and that's where the fun begins. If the brush draws, say, a circle a few pixels in diameter, you get a sort of "blot" effect, with the blots overlapping each other haphazardly. Or you could draw a line in some random direction from the source pixel's location, or add some noise to the color so that it varies a little from the source color, or draw a clump of dots centered at the source pixel, or draw a silhouette of a wiener dog in the appropriate color, or . . . the possibilities are endless. In a way you're tracing the source, but the brush you use to trace with isn't exact, and the results can be striking.

The finished images tend to look very "painterly" and are often evocative of impressionist paintings like those of Monet or Renoir, or of the pointillist "divisionist" technique of Seurat. (Can you tell I've been spending some time with my handy-dandyRandom House Encyclopedia ? Thanks, Mom.) This is a refreshing move away from the trend toward photo-realistic rendering that you see so much of in computer graphics.

I wrote a Macintosh application that implements a simplified version of what Haeberli did, so I could play around with it. (The application and all the source code are on this month's CD, for you to mess around with. If you find any problems, please let me know.) The most fun part turned out to be writing the brush routines, and I was curious to see just how hard it is to incorporate plug-ins into an application, so I made up a simple plug-in interface for the brushes (plug-ins are code resources separate from the application that are loaded and run as needed). Surprisingly, it turned out to be pretty trivial to implement plug-ins. I figured I was going to be forced to descend to the level of A5 worlds and code resource headers, but with the exception of one subtle gotcha it was easy. Basically you just get a handle to the code resource with GetResource, lock it, dereference it, and call it. I had to do some ugly casting to convince the C compiler to let me make the call, but other than that there were almost no problems.

One thing turned up that I couldn't figure out, and I was forced to seek help. I was writing a filter routine (the application supports both brushes and filters as plug-ins) that was a modified version of the RedGreenInvert routine from the article "Drawing in GWorlds for Speed and Versatility" in this issue. I first tried it linked into my application, so I could use the source debugger on it. Once it was working, I converted it to a plug-in and BOOM, it crashed with a bus error. Some investigative work pointed to SwapMMUMode as the culprit, but I couldn't figure out why. (Trumpet fanfare) Bo3b Johnson to the rescue once again! It turns out that since I was calling the plug-in in 24-bit mode, when it came time to call SwapMMUMode the PC contained an address that had some of its high bits set (in this case the "locked" bit since I had locked the handle and the "resource" bit since it was a handle to a code resource). This is a bad thing. The solution, of course, is to call StripAddress on the pointer to the plug-in before calling it. That way the address in the PC is clean and SwapMMUMode is happy.

There are several commercially available applications that do Haeberli-like image manipulation. Monet, by Delta Tao Software, is a much more complete and sophisticated implementation of Haeberli's concepts, incorporating some of the cooler features like opacity control, getting the direction of the brush strokes from the movement of the mouse, and so on. (You gotta love Delta Tao Software: when a customer asks for an IBM version of one of their products, they gleefully answer "Buy a Macintosh.") There's also Painter, a truly unique and remarkable paint program from Fractal Design that simulates very naturally the media artists use--chalk, pencil, charcoal, and so on. It has a "cloning" function that's similar to Haeberli's in concept: you can manually or automatically draw over the "source" image with any of the brushes. Aldus Gallery Effects by Silicon Beach Software is a product that basically consists of canned filters that can be applied to images to transform them in interesting ways, many of which are similar to the effects you get with Haeberli's technique. And then of course there's Adobe Photoshop, the brilliant, precocious teenager of image- processing programs.

Photoshop seems to have become the de facto industry standard image-processing program. Its versatility is, so far, unmatched by any other program I've seen. And its plug-in interface has also become something of a standard: many Macintosh graphics programs (Painter, for one) now support Photoshop plug-ins, and I know of at least one software company that does nothingbut  writePhotoshop plug-ins. I think plug-ins are a very cool thing: they allow extension and customization of an application on the fly, bringing us a tiny step closer to the dream of "erector set" applications that can be taken apart, rearranged, and rebuilt by users to suit their needs. If you want to write some Photoshop plug-ins, you can find the documentation for the plug-in interface (along with examples in MPW C, MPW Pascal, and THINK C) on the CD.

Here's the big, deep question about these digitally transformed images: Are They Art? An image produced by any of these applications can indeed be "arty"; of that there is no doubt. But is it really art? Many graphic artists would immediately answer with a resounding "NO!" They'd say that it just looks like art, that it imitates art (kinda like life), but isn't really art because it'sautomatic . But many painters in the surrealist and abstract impressionist movements took great interest in what they termed "automatic" painting, painting without the intervention of conscious control. Jackson Pollock was a notable practitioner of this technique. Is the creation of a painting by automatic means any different, in principle, from what these computer-based tools do?

"Wait a minute!" these artists might cry, "Pollock began with a blank canvas! What he did was truly original! You (smug smirk) are just taking an existing image and transforming it with a computer. That's not art, that's just (expression of extreme distaste)filtering ."

"Wipe that smug smirk off your face," I might smirk smugly, "what about the dadaists? They claimed that art was anything that anyone decided tocall art, and I'm calling these images art." (Fun dadaist tales: Marcel Duchamp, a dadaist in New York, bought a urinal, signed it "R. Mutt," and called it art. He claimed that the signature alone made any manufactured item into a work of art. These "readymades," as he called them, sold quite well. And then there's Kurt Schwitters, a Hanover dadaist, who made collages from rubbish. Now the dadaist movement, admittedly, was intended to upset the status quo, rip apart the definition of art, and shock people out of their bourgeois sensibilities, but their influence is still strongly felt in modern art, and has forever muddied the definition of what art is. For that I heartily thank them.)

There's another eminently pragmatic definition of art: it's art if someone is willing to buy it. This one is distasteful in its materialistic slant, but I must admit that it's a useful one, at least to people who make a living making art. Then there's the Marshall McLuhan stance that "art is anything you can get away with." I personally love this one for its nebulousness, and I'm willing to leave it at that.

Whatever definition we pick, we still can't conclusively say whether these computer-transformed images are art. Art is just too slippery a thing to pin down, like trying to put a cloud in a chair. I think art is primarily a dialog between the creator and the experiencer: if something is communicated, I'll call it art. But in the final analysis, does it really matter? These tools are just another kind of computer fun, andeveryone , artist or not, can play.


  • Beyond Photography: The Digital Darkroom  by Gerard J. Holzmann (Prentice-Hall, 1988).
  • Paint By Numbers: Abstract Image Representations  by Paul Haeberli (in the SIGGRAPH '90 Conference Proceedings).
  • Elbert's Bad Word  by Audrey Wood (Harcourt Brace Jovanovich, 1988).

DAVE JOHNSON would like to share with you a quote from The Three-Pound Universe  by Judith Hooper and Dick Teresi, a wonderful book about the human brain: "Research at Yale University's Center for Behavioral Medicine turned up the surprising fact that regular 'reading therapy'--that is, reading a book for half an hour a day--is neurophysiologically equivalent to the practice of TM. (Whether this means the Maharishi's mantras are comparable to Heidi  or merely reflects the crudeness of our measuring devices, we'll let you decide.)" This finding vindicates Dave's habits in a way no heartfelt argument ever could. *

Dave welcomes feedback on his musings. He can be reached at JOHNSON.DK on AppleLink, on the Internet, or 75300,715 on CompuServe. *


Community Search:
MacTech Search:

Software Updates via MacUpdate

OmniPlan 3.0 - Robust project management...
With OmniPlan, you can create logical, manageable project plans with Gantt charts, schedules, summaries, milestones, and critical paths. Break down the tasks needed to make your project a success,... Read more
Yummy FTP 1.11 - FTP/SFTP/FTPS client fo...
Yummy FTP is an FTP + SFTP + FTPS file transfer client which focuses on speed, reliability and productivity. Whether you need to transfer a few files or a few thousand, schedule automatic backups, or... Read more
Tweetbot 2.1 - Popular Twitter client. (...
Tweetbot is a full-featured OS X Twitter client with a lot of personality. Whether it's the meticulously-crafted interface, sounds and animation, or features like multiple timelines and column views... Read more
MacPilot 8.0 - Enable over 1,200 hidden...
MacPilot gives you the power of UNIX and the simplicity of Macintosh, which means a phenomenal amount of untapped power in your hands! Use MacPilot to unlock over 1,200 features, and access them all... Read more
Typinator 6.7 - Speedy and reliable text...
Typinator turbo-charges your typing productivity. Type a little. Typinator does the rest. We've all faced projects that require repetitive typing tasks. With Typinator, you can store commonly used... Read more
Adobe Lightroom 6.2 - Import, develop, a...
Adobe Lightroom is available as part of Adobe Creative Cloud for as little as $9.99/month bundled with Photoshop CC as part of the photography package. Lightroom 6 is also available for purchase as a... Read more
ForeverSave 2.1.4 - Universal auto-save...
ForeverSave auto-saves all documents you're working on while simultaneously doing backup versioning in the background. Lost data can be quickly restored at any time. Losing data, caused by... Read more
VueScan 9.5.27 - Scanner software with a...
VueScan is a scanning program that works with most high-quality flatbed and film scanners to produce scans that have excellent color fidelity and color balance. VueScan is easy to use, and has... Read more
AirPort Utility 6.3.6 - Set up and manag...
Note: Most recent release available only within OS X 10.11 El Capitan update. Use AirPort Utility to set up and manage your Wi-Fi network and AirPort base stations, including AirPort Express, AirPort... Read more
Quicksilver 1.3.1 - Application launcher...
Quicksilver is a light, fast and free Mac application that gives you the power to control your Mac with keystrokes alone. Quicksilver allows you to find what you need quickly and easily, then act... Read more

Super Sharp (Games)
Super Sharp 1.1 Device: iOS Universal Category: Games Price: $1.99, Version: 1.1 (iTunes) Description: Your finger has never been so sharp! Cut with skill to complete the 120 ingenious physics levels of Super Sharp and become a cut... | Read more »
Assembly - Graphic design for everyone...
Assembly - Graphic design for everyone 1.0 Device: iOS Universal Category: Photography Price: $2.99, Version: 1.0 (iTunes) Description: Assembly is the easiest most powerful design tool on the App Store. Create anything you can... | Read more »
YAMGUN (Games)
YAMGUN 1.0 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0 (iTunes) Description: The invasion has begun! Protect the walls of the citadel against waves of enemies! But watch out, you will soon run out of ammo...... | Read more »
Royal Bounty HD (Games)
Royal Bounty HD 1.0 Device: iOS Universal Category: Games Price: $4.99, Version: 1.0 (iTunes) Description: New World Computing Approved "Hi Guys! looks good so far! keep up the good work. I worked on HoMM 3 and 4 creating all of the... | Read more »
Swords & Crossbones: An Epic Pirate...
Swords & Crossbones: An Epic Pirate Story 1.0 Device: iOS Universal Category: Games Price: $4.99, Version: 1.0 (iTunes) Description: | Read more »
Camel Up (Games)
Camel Up 1.0.0 Device: iOS Universal Category: Games Price: $4.99, Version: 1.0.0 (iTunes) Description: | Read more »
The Martian: Bring Him Home (Games)
The Martian: Bring Him Home 1.0 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0 (iTunes) Description: Based on the best selling novel and critically acclaimed film, THE MARTIAN tells the story of Astronaut Mark... | Read more »
This Week at 148Apps: September 21-30, 2...
Leap Into Fall With 148Apps How do you know what apps are worth your time and money? Just look to the review team at 148Apps. We sort through the chaos and find the apps you're looking for. The ones we love become Editor’s Choice, standing out above... | Read more »
Tweetbot 4 for Twitter (Social Networki...
Tweetbot 4 for Twitter 4.0 Device: iOS Universal Category: Social Networking Price: $4.99, Version: 4.0 (iTunes) Description: *** 50% off for a limited time. *** | Read more »
Mori (Games)
Mori 1.0 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0 (iTunes) Description: Stop, rewind and unwind with Mori. Time is always running, take a moment to take control. Mori is an action puzzle game about infinitely... | Read more »

Price Scanner via

Save up to $350 with Apple refurbished iMacs
Apple has Certified Refurbished iMacs available for up to $350 off the cost of new models. Apple’s one-year warranty is standard, and shipping is free: - 27″ 3.5GHz 5K iMac – $1949 $350 off MSRP - 27... Read more
Mac Pros on sale for up to $300 off MSRP
B&H Photo has Mac Pros on sale for up to $300 off MSRP. Shipping is free, and B&H charges sales tax in NY only: - 3.7GHz 4-core Mac Pro: $2818.99, $181 off MSRP - 3.5GHz 6-core Mac Pro: $3699... Read more
5K iMacs on sale for up to $150 off MSRP, fre...
B&H Photo has the 27″ 3.3GHz 5K iMac on sale for $1899.99 including free shipping plus NY tax only. Their price is $100 off MSRP. They have the 27″ 3.5GHz 5K iMac on sale for $2149, $150 off MSRP... Read more
Twelve South Redesigns BookArc For Today’s Sm...
Twelve South has announced a redesigned version of their very first product, BookArc for MacBook. Tailored specifically for the newest generation of MacBooks, BookArc holds the new, smaller Apple... Read more
Phone 6s Tips & Tricks – Tips Book For iP...
Poole, United Kingdom based Tap Guides Ltd. has announced the release and immediate availability of iPhone 6s Tips & Tricks, an in-depth eBook available in the iBookstore that’s priced just $2.99... Read more
13-inch 2.5GHz MacBook Pro on sale for $994,...
Best Buy has the 13″ 2.5GHz MacBook Pro available for $994.99 on their online store. Choose free shipping or free instant local store pickup (if available). Their price is $105 off MSRP. Price valid... Read more
Is The iPad Pro Really A Serious Laptop Repla...
Probably not, at least for productive professionals and other power users. Steve Jobs declared that we’d entered the “post-PC Era” with the advent of the original iPad in 2010, a phrase we don’t hear... Read more
Wednesday Deal: 13-inch Retina MacBook Pros f...
Adorama has 13″ Retina MacBook Pros on sale for up to $130 off MSRP. Shipping is free, and Adorama charges sales tax for NY & NJ residents only: - 13″ 2.7GHz/128GB Retina MacBook Pro: $1199.99 $... Read more
uBar 3.0 for Mac OS X – Custom Dock Replaceme...
Brawer Software has announced the release of uBar 3.0, an important update to their popular app and window manager for Mac OS X. uBar allows users to position it whichever side of the screen they... Read more
13-inch 2.5GHz MacBook Pro (refurbished) avai...
Apple has Certified Refurbished 13″ 2.5GHz MacBook Pros available for $829, or $270 off the cost of new models. Apple’s one-year warranty is standard, and shipping is free: - 13″ 2.5GHz MacBook Pros... Read more

Jobs Board

*Apple* Retail - Multiple Customer Support P...
Job Description:Customer SupportSpecialist - Retail Customer Service and SalesTransform Apple Store visitors into loyal Apple customers. When customers enter the Read more
Software Engineer, *Apple* Watch - Apple (U...
…the team that is revolutionizing the watch! As a software engineer on the Apple Watch team, you will be responsible for building world-class applications and frameworks Read more
*Apple* Online Store UAT Lead - Apple (Unite...
**Job Summary** The Apple Online Store is a fast paced and ever evolving business environment. The User Acceptance Testing (UAT) lead in this organization is able to Read more
Hardware Systems Integration Engineer - *App...
**Job Summary** We are seeking an enthusiastic electrical engineer for the Apple Watch team. This is a design engineering position that entails working with Read more
Touch Validation Design (EE) - *Apple* Watc...
**Job Summary** Help launch next-generation Touch Technologies in Apple products. The Touch Technology team develops cutting-edge Touch solutions and technologies that Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.