Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2017
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.13 KB | None | 0 0
  1. kL <- 1
  2. kC <- 1
  3. kH <- 1
  4. K1 <- 0.045
  5. K2 <- 0.015
  6.  
  7. # x and y should be two different colors in L*a*b* space
  8. CIEDE2000 <- function(x, y) {
  9. L1 <- x$L
  10. L2 <- y$L
  11. a1 <- x$a
  12. a2 <- y$a
  13. b1 <- x$b
  14. b2 <- y$b
  15.  
  16. delta_L <- L2 - L1
  17. L_bar <- mean(c(L1, L2))
  18.  
  19. C1 <- sqrt(a1^2 + b1^2)
  20. C2 <- sqrt(a2^2 + b2^2)
  21. C_bar <- mean(C1, C2)
  22. delta_C <- C1 - C2
  23.  
  24. sqrt_factor <- sqrt(C_bar^7 / (C_bar^7 + 25^7))
  25. a_prime1 <- a1 + a1 / 2 * (1 - sqrt_factor)
  26. a_prime2 <- a2 + a2 / 2 * (1 - sqrt_factor)
  27.  
  28. C_prime1 <- sqrt(a_prime1^2 + b1^2)
  29. C_prime2 <- sqrt(a_prime2^2 + b2^2)
  30. C_prime_bar <- mean(C_prime1, C_prime2)
  31. delta_C_prime <- C_prime2 - C_prime1
  32.  
  33. h_prime1 <- (atan2(b1, a_prime1) * 180 / pi) %% 360
  34. h_prime2 <- (atan2(b2, a_prime2) * 180 / pi) %% 360
  35.  
  36. if (C_prime1 == 0 || C_prime2 == 0) {
  37. delta_h_prime <- 0
  38. } else if (abs(h_prime1 - h_prime2) <= 180) {
  39. delta_h_prime <- h_prime2 - h_prime1
  40. } else if (h_prime2 <= h_prime1) {
  41. delta_h_prime <- h_prime2 - h_prime1 + 360
  42. } else {
  43. delta_h_prime <- h_prime2 - h_prime1 - 360
  44. }
  45.  
  46. delta_H_prime <- 2 * sqrt(C_prime1 * C_prime2) * sin((delta_h_prime * pi / 180) / 2)
  47.  
  48. if (C_prime1 == 0 || C_prime2 == 0) {
  49. H_prime_bar <- h_prime1 + h_prime2
  50. } else if (abs(h_prime1 - h_prime2) <= 180) {
  51. H_prime_bar <- mean(h_prime1, h_prime2)
  52. } else if (h_prime1 + h_prime2 < 360) {
  53. H_prime_bar <- (h_prime1 + h_prime2 + 360) / 2
  54. } else {
  55. H_prime_bar <- (h_prime1 + h_prime2 - 360) / 2
  56. }
  57.  
  58. T <- 1 - 0.17 * cos((H_prime_bar - 30) * pi / 180) +
  59. 0.24 * cos(2 * H_prime_bar * pi / 180) +
  60. 0.32 * cos((3 * H_prime_bar + 6) * pi / 180) -
  61. 0.2 * cos((4 * H_prime_bar - 63) * pi / 180)
  62.  
  63. SL <- 1 + (0.015 * (L_bar - 50)^2) / sqrt(20 + (L_bar - 50)^2)
  64. SC <- 1 + 0.045 * C_prime_bar
  65. SH <- 1 + 0.015 * C_prime_bar * T
  66.  
  67. RT <- -2 * (C_prime_bar^7 / (C_prime_bar^7 + 25^7)) * sin(60 * exp(-((H_prime_bar - 275) / 25)^2) * pi / 180)
  68.  
  69. term1 <- (delta_L / (kL * SL))^2
  70. term2 <- (delta_C_prime / (kC * SC))^2
  71. term3 <- (delta_H_prime / (kH * SH))^2
  72. term4 <- RT * delta_C_prime * delta_H_prime / (kC * SC * kH * SH)
  73.  
  74. return(sqrt(term1 + term2 + term3 + term4))
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement