You may also want to look at this:
http://ww2.lafayette.edu/~reiterc/j/withj/withj14_im_proc02_pp.pdf .  It's a
paper by Cliff on processing color spaces with J.

On Fri, Mar 20, 2009 at 1:25 PM, Jonathan Lettvin <[email protected]>wrote:

> NB. This much is working
> load 'media/image3'
> load 'media/image3/view_m'
> filename1=:'filename.png'
> image1=:read_image filename1
> {image1
> view_image image1
>
>
> Very exciting, but very hard won.  Difficulty is anticipated, but help
> would
> be appreciated.
> First, please recommend the book that accelerates newbies best.
> I have the book APL\360 and actually used the APL system back in the early
> 70s.
>
> It is not clear that 'image3' is cross platform like 'platimg'.
> If switching to platimg is preferable, please show conversion from RGB
> plane
> to R G B planes.
>
> Then, please help with the following.
> Experiments and extensive reading of documentation has been unfruitful.
> I expect that the learning curve to do this anaided will consume a month or
> two.
> In the "teach a man to fish" spirit give chapter and verse instead of
> actual
> code.
> I am not a mathematician, but hard work is okay.
> I am also okay with actual code.
>
> Here are the actions I would like to take:
> 1) convert from 0-255 valued triples to 0-1 valued color planes
> 2) take per pixel normalized weighted mean of color planes ((Cr * R) + (Cg
> *
> G) + (Cb * B)) / (Cr + Cg + Cb)
> 3) local normalized weighted mean (North + South + East + West + (Cc *
> Center)) / ( 4 + Cc )
> 4) distribute pixel from plane into deep bricks with brick face dimensions
> same as an image color plane
>
> Cn is a scalar to be applied to the N plane.
>
> Operation 2 in C++ uses valarray as follows:
> valarray<double> mean( ( Cr * Rsource + Cg * Gsource + Cb * Bsource ) / (Cr
> + Cg + Cb) );
>
> Operation 3 in C++ uses valarray and mask_array to mask out edges and
> calculate as follows:
> target = 0; /// zero the target valarray
> target[ North ] += source[ South ];
> target[ South ] += source[ North ];
> target[ East ] += source[ West ];
> target[ West ] += source[ East ];
> target /= NeighborCount;
> target += Cc * source;
> target /= ( 1.0 + Cc );
>
> Operation 4 (like convolution):
> Construct an index_array specifying relative offsets of a sub-brick within
> a
> brick.
> Construct a same-sized as index_array valarray containing coefficients.
> Add raveled pixel offset to index_array.
> Add product of coefficient array times pixel value to brick through offset
> index_array.
> I wouldn't mind being able to use negative offseting.
> The brick will be sized to contain the sub-bricks around the image edge.
> This way "convolution" will never be out of bounds.
>
> Apologies if the character of this email is outside etiquette.
>
> Jonathan D. Lettvin
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>



-- 
Devon McCormick, CFA
^me^ at acm.
org is my
preferred e-mail
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to