lksv / node-resemble.js

LOOKING FOR MAINTAINER - Image analysis and comparison
MIT License
99 stars 37 forks source link

Huge difference between node-resemble-js and core resemblejs #22

Open maurycyg opened 8 years ago

maurycyg commented 8 years ago

I've two images and when I compare them in node-resemble-js I get this output

{ 
  isSameDimensions: false,
  dimensionDifference: { width: -66, height: -8622 },
  misMatchPercentage: '5.97',
  analysisTime: 1653,
  getDiffImage: [Function]
 }

But when I use the same two images on http://huddle.github.io/Resemble.js/ it tells me The second image is 97.49% different compared to the first. And they have different dimensions.

Update:

When set page.clipRect to a fixed size the percentage changed completely to just few percents. Resemblejs clips width and height of images to 1200 pixels for performance with node-resemble-js the pixels that exceeded the original image size were treated as similiar

juliend2 commented 8 years ago

@maurycyg node-resemble-js doesn't clip to 1200 px on my side. It can compare bigger images than that. Seeing your two images would help better understand the issue.

But I think your issue is because node-resemble-js leaves the truncated part aside and do not take that part into account for the misMatchPercentage. Which in my opinion is a mistake, because the size difference is still a difference that we should take into consideration. @lksv , do you happen to know why it is the case?

juliend2 commented 8 years ago

Ah, I think it's because document is not available in Node.js (only in the browser), so we can't use it to generate a canvas element (which is also unavailable in Node.js). node-resemble-js uses canvas to normalize (via the normalise function) the images' widths and heights. So maybe a workaround would be to use node-canvas, but it depends on Cairo to be installed on the system. :-(

@lksv I personally need that same behaviour as the original resemble.js, so do you want me to make a pull request, or do I need to fork a new repo?

BTW, thanks for making this awesome node module! Very appreciated! :)