"Clipping" a raster with a polygon internally converts the polygons to raster before masking the pixels. In order to have full control on the clipping, you should therefore split your processing in these two steps 1) convert polygon to raster (=rasterize) 2) mask the pixels.
So the hard part is about getting labelling your pixels as river if they are covered by more than 50 %. gdal_rasterize (and QGIS, which directly uses gdal) only includes to methods (center of the pixel inside the polygon OR pixel touched by the boundary of the polygon.
The workaround is to rasterize your polygons withat a higher resolution (e.g. 2 m) with a constant value of 1 (based on a field). Then gdalwarp the result with "-r sum" at the very same resolution (e.g. -tr 10 10 ) and extent (with -te ) than your Sentinel image.
You can then use your favorite tool to mask your Sentinel image when the sum is larger than your threshold (in ùmy example, sum > 12 because you have 25 pixels, but you can change the number of pixels depending on your compromise between processing time and precision )
Thanks. I hope i made it more clear.
– GeoObserver Sep 06 '21 at 12:51