Advertisement
Guest User

Untitled

a guest
Apr 26th, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.05 KB | None | 0 0
  1. static Img radonTransform(Img img, int res){
  2. img.forEachParallel(px->{
  3. int l = px.getLuminance();
  4. px.setRGB_preserveAlpha(l, l, l);
  5. });
  6. double imgDiagonal = Math.sqrt(img.getHeight()*img.getHeight()+img.getWidth()*img.getWidth())*2;
  7.  
  8. Img radonImg = new Img(res, res);
  9. radonImg.forEachParallel(px-> {
  10. double a = px.getY()*Math.PI/res;
  11. double r = px.getXnormalized()-0.5;
  12. r*=2;
  13.  
  14. double sum = 0;
  15. int numElements = 0;
  16. for(int i = 0; i < imgDiagonal; i++){
  17. double t = i*1.0/imgDiagonal;
  18. t -= 0.5;
  19. t*=2;
  20.  
  21. double x = r*Math.cos(a)+t*Math.sin(a);
  22. double y = r*Math.sin(a)-t*Math.cos(a);
  23. x = (x+1)/2;
  24. y = (y+1)/2;
  25.  
  26. if(inUnitRange(x) && inUnitRange(y)){
  27. sum += Pixel.getLuminance(img.interpolateARGB((float) x,(float) y))/255.0;
  28. numElements++;
  29. } else {
  30. // System.out.format("a:%.2f r:%.2f t:%.2f x:%.2f y:%.2f %n", a,r,t,x,y);
  31. }
  32. }
  33. sum /= Math.max(1, numElements);
  34. px.setRGB_fromNormalized((float)sum, (float)sum, (float)sum);
  35. });
  36. return radonImg;
  37. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement