This technique has been around for a long time but it was patented, and the patent finally expired a few years ago. Fun to see it commoditized like this.
What makes you think patents prevented photo mosaics? There were multiple programs anyone could buy for $50 over 20 years ago.
The basic technique is to scale down images and treat them as high dimensional points, then match them with patches of the main image, also treated as high dimensional points. This can be done efficiently with high dimensional nearest neighbors.
You might be thinking of SIFT, which was a patented and part of the methodology was more efficient high dimensional searching using best bin first kd-trees.
Patents are about processes and if you read this patent it is very specific. Your link even mentions that there have been multiple programs that do this for a long time.
Patents are not only about processes, they can also cover the final product amongst other aspects. The patent in question also does the same [1], as visible via claims 14, 29, 46, 51, whereas the claim 1 is about the "method".
Reading the claim #1 of the said patent, I do not find it "very specific" as you said. It is quite broad within the purposes of making a mosaic image. One way of avoiding infringing claim 1 is to not use a computer for this.
I agree that the Wikipedia page mentions multiple programs doing this for long, however, it has not committed that there has no patent violation and a possibility that the patent holder "has chosen not to bring infringement proceedings" is also cited.
>> The original person said that 'patents prevented photomosaics'.
I see your point now, although I do not see the original person (@tomcam) explicitly saying 'patents prevented photomosaics'. I only see "Fun to see it commoditized like this." [1]
>> Also matching by root mean squared error is pretty specific. It is possible to match based on other error criteria.
The applicability of the said patent [2] is not limited to use of RMS error. I do not see "root mean square" anywehere in Claim 1 or any independent claim of the patent. That is introduced only in dependent claims like claim 3.
In case you do not already, you may consider reading [3-5] below to understand how coverage of a patent depends on independent and dependent claims.
>> Is there any way of knowing if a certain type of program is patented?
If you've a seen similar thing pre-existing, chances are that it may be someone's intellectual property, and which then should be respected.
In this particular example, Wikipedia page on photographic mosaics [1] itself has a section on IP aspects of the same [2].
>> How can a developer protect themselves from publishing patented software?
The best approach is to respect the prior art and properly license the same as needed.
At times, a developer may have strong reasons to believe that the related prior patents are either not infringed or are invalid. In this case they should be ready to be challenged.
The basic technique is to scale down images and treat them as high dimensional points, then match them with patches of the main image, also treated as high dimensional points. This can be done efficiently with high dimensional nearest neighbors.
You might be thinking of SIFT, which was a patented and part of the methodology was more efficient high dimensional searching using best bin first kd-trees.