One way would be to modify the filter. Add code to it that checks whether a pixel is within a rect, and either uses the calculated (filtered) value or just the unfiltered texture for that pixel accordingly. Have the rect passed to the filter as a parameter, as you might need to modify it to allow for e.g. scaling, the position of the Sprite being filtered, etc..
3000 x 2000 pixels is quite large, so the filter would need a lot of memory. In fact for some profiles the limit for textures is 2048 x 2048 so it will simply fail to create the texture for the filter. Finding some way to break it up into pieces, only one of which needs filtering, would stop this being an issue and save memory and other filter overhead. How you do this depends on how your scene is assembled, so is something you will have to look at. Ideally you would be able to partition it so one part is the 500 x 500 rectangle that needs filtering, but I guess you have looked at that and it’s not so easy.