Consider a raster where 10 represents river, and 11 represents water body. This is an easier problem then trying to convert shades of blue to water and shades of black to roads etc which isnt usually feasible.

The steps are as follows:
  1. Downsample with a Resampler to a smaller raster / larger cell size if your input is too big (anything bigger than 1000 x 1000 will take some time to process)
  2. Use a RasterCellValueReplacer to set all cells to 0 except the cell value for the theme you want to vectorize. So for rivers = 10, replace all values <=9 and >=11 with 0
  3. Use a RasterBandNodataSetter or RasterPaletteNoDataSetter to set your no data value to 0
  4. Use a RasterCellCoercer to convert all non-zero cells to polygons. Make sure you have the extract no data values set to 'No'
  5. Dissolve the cell polygons together
  6. Smooth with Generalizer

Some additional steps may be needed depending on the geometry / shape of the data. For example, a small 1/4 cell width buffer might help connect diagonal lines into continuous line like polygons, otherwise you may get many separate cell polygons almost touching at the corners. There are also tricks to try to convert polygons back to lines but you will have to play around with combinations of Generalizer settings, negative buffers etc to see what you can achieve.