Well, I need to render it to the screen. Care to provide an example of how it can be done better ?
Inheriting from sf::Drawable.
If you really have 1800 instances of that class Tile then it's bad.
You copy image in every tile for no apparent reason, run the mask on that copy, keep that copy and create texture from it for every single tile.
That's not how it should be done if you aim for max efficiency, you should load your tilesheet into image(or few, if your tilesheet is very large) once, run mask on it once, create texture out of it once, get rid of image and then pass texture references and use sprites' sub rects or vertex arrays.