Here's an example that changes all black values to white outside the perimeter mask. However, if you compare the input and output data, it does not alter the values of blue. So only 0,0,0 is set to white, and 0,0,255 is left as is.

I found 2 ways to do this.

1. Palette approach:

To do this I use palettes rather than bands, since this is the only way I know that we can use the RasterCellValueReplacer to select only black and exclude other cells with some 0s but not all. First, I convert the RGB color banded data to a color palette with RasterPaletteGenerator. Then I change the cell value based on the palette or color look up value for black, rather then for band value = 0. In this case black (0,0,0) is represented by 2 and white is represented by 255, so we replace all 2's with 255. This will work only if we use the same color palette since a different palette will likely have a different value for black.
It is possible to generate a color lookup table for a typical image and then use that for all your data with the PaletteAdder rather than the PaletteGenerator I use here. By only applying this band to palette to band conversion outside of the perimeter,
we minimize the changes to data within the perimeter.

To apply this only outside the perimeter, I use the perimeter polygon to create a perimeter mask. I use a Clipper polygon to cut a hole in a grid of 1's.Because I use the output from ClippedInside rather than ClippedOutside, the mask of 0's applies to data outside of the polygon rather than the data in it. So you get a grid with 1's inside the perimeter and 0's outside of it ClippedInside. I use this to select the data I want to preserve as-is for the inside. Then I use the ClippedOutside grid to select the outside grid where I have changed balck to white. Then I add the 2 grid results together to combine so I get preserved values within the perimeter, and black to white outside the perimeter. It is essential that the Clipper is set to preserver Clippee extents so that downstream raster calculations will work, since these require uniform size.


2. RasterExpressionEvaluator Approach

Another, more efficient way to change 0,0,0 to 255,255,255 without altering values like 0,0,255.

All you need is a RasterExpressionEvaluator with an expression set to:
if ((A[0]+A[1]+A[2])==0, 255, A[0]); if ((A[0]+A[1]+A[2])==0, 255, A[1]); if ((A[0]+A[1]+A[2])==0, 255, A[2])

Roughly translated, this means if R+G+B=0, then set the cell to 255, else leave it as is.

You could just as easily use this expression to change from any arbitrary color a,b,c to another arbitrary color x,y,z.
This would look like:
if ((A[0]==a && A[1]==b && A[2]==c), x, A[0]); if ((A[0]==a && A[1]==b && A[2]==c), y, A[1]); if ((A[0]==a && A[1]==b && A[2]==c), z, A[2])
You can even make a custom transformer to do this since you can use the syntax A:attribute_name to insert user defined attribute values into the expression.

Also, note that because there is no palette conversion necessary, you dont get any data alteration. With the palette approach above, 255,255,255 actually becomes 253,253,253. You also dont have to worry about applying the same palette to every incoming tile which can cause problems if the colors are not well matched.

For more on this powerful transformer, see RasterExpressionEvaluator on fmepedia at:
http://www.fmepedia.com/index.php/RasterExpressionEvaluator#Condition_Examples