Fast Algorithm to Determine Average Brightness of an Image

Rick Harrison harrison at all-auctions.com
Tue Sep 20 15:56:43 EDT 2016


Hi Sannyasin,

Based on my previous experiences trying to process
images with LC pixel by pixel, I would have to say no.
LC is too slow for this kind of processing.

You would probably have to use a routine written in
some other language like Objective C, or C++, etc.

If anyone else has had a different experience with this type
of image processing in LC please chime in!

Thanks,

Rick

> On Sep 20, 2016, at 3:15 PM, Sannyasin Brahmanathaswami <brahma at hindu.org> wrote:
> 
> Use Case:
> 
> I want to place puzzle tiles on top of an image. We take a field, put a grc behind it, take a snapshot, crop each word off at -1000, -1000 and then scramble the tiles to make a puzzle… all this works really well. So I decided to dress it up a bit more: we dynamically choose a color for the foreground of the field in RGB range of 0-135 for all three colors → This gets us dark type… then add 100 to all the colors and this gets us a color for the bkgnd grc which is the same hue, but brighter (well, that depends on your preferred brand HSV, HSL, HSB LAB color theory, it's not that simple… but, close enough for this context)  tiles look great.. color is randomized for each puzzle with the caveat of an occasional "ugly" (in relation to the nature photo in the background)  but still… cool..
> 
> OK I thought hmmm we could also use light type with dark background and I got this working… too much fun..
> 
> Switch sUserColorRange 
> case "darkType"
> set the itemdelimiter to "," # just to be safe
> put randomInRange(0,135) into tRGB
> put comma & randomInRange(0,135) after tRGB
> put comma & randomInRange(0,135) after tRGB
> set the backgroundcolor of grc "startHere" to tRGB
> set the foregroundcolor of fld _Quote to tRGB
> # same hue for background, but light
> repeat for each item tHue in tRGB
> put tHue+ (115) & comma after tTileBkgndRGB
> end repeat
> delete char -1 of tTileBkgndRGB
> set the backgroundColor of grc quoteBkgnd to tTileBkgndRGB
> break
> case "lightType"
> set the itemdelimiter to "," # just to be safe
> put randomInRange(136,255) into tRGB
> put comma & randomInRange(136,255) after tRGB
> put comma & randomInRange(136,255) after tRGB
> set the backgroundcolor of grc "startHere" to tRGB  ## oops need to fix this… too light, disappears
> set the foregroundcolor of fld _Quote to tRGB
> # same hue for background, but light
> repeat for each item tHue in tRGB
> put tHue- (115) & comma after tTileBkgndRGB
> end repeat
> delete char -1 of tTileBkgndRGB
> set the backgroundColor of grc quoteBkgnd to tTileBkgndRGB
> end Switch
> 
> The incoming nature photo that is the backdrop for the puzzle is a random selection. The above is predicated on a user choice/save-as-setting, but a preferred algorithm would be:
> 
> Determine average overall brightness of the image. If below 130 on a scale of 1-255, then use light colored type on dark tile… if >130 then use dark type on light tiles
> 
> So is there a fast, efficient way to analyze a 1200 X 800 px image to get this average brightness value.
> 
> 
> 
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode





More information about the use-livecode mailing list