내 데이터베이스에서 축소 된 그림의 RGB 값을 가지고 있으며 imagemagick을 사용하여 Lab으로 변환 처리하고 싶습니다. 하지만이 코드 샘플을 찾을 수 없었습니다.어떻게 RGB를 실험실로 변환 할 수 있습니까?
Perl Imagemagick API를 사용하여 RGB 색상 값을 Lab으로 변환하려면 어떻게해야합니까? 이것은 가능한가?
내 데이터베이스에서 축소 된 그림의 RGB 값을 가지고 있으며 imagemagick을 사용하여 Lab으로 변환 처리하고 싶습니다. 하지만이 코드 샘플을 찾을 수 없었습니다.어떻게 RGB를 실험실로 변환 할 수 있습니까?
Perl Imagemagick API를 사용하여 RGB 색상 값을 Lab으로 변환하려면 어떻게해야합니까? 이것은 가능한가?
잘 모르겠지만 Perl imagemagick API를 사용할 방법이없는 것처럼 보입니다. 대신 내가 Perl Monks (사용자 알 수 없음)에서 일부 기능을 사용하고 있습니다 :
# I do not do the linear approximation for $u/$un <= 0.008859
sub RGB2Lab {
my ($red, $green, $blue) = @_;
my ($x, $y, $z) = _RGB2XYZitu($red, $green, $blue);
my ($xn, $yn, $zn) = _RGB2XYZitu(1,1,1);
my $fx = _cuberoot($x/$xn);
my $fy = _cuberoot($y/$yn);
my $fz = _cuberoot($z/$zn);
return (116*$fy-16, 500*($fx - $fy), 200*($fy - $fz));
}
sub Lab2RGB {
my ($L, $a, $b) = @_;
my ($xn, $yn, $zn) = _RGB2XYZitu(1,1,1);
my $fL = _cube(($L+16)/116);
my $fa = _cube($a/500);
my $fb = _cube($b/200);
my $y = _cube(($L+16)/116) * $yn;
my $x = _cube(($L+16)/116 + $a/500) * $xn;
my $z = _cube(($L+16)/116 - $b/200) * $zn;
return _XYZitu2RGB($x, $y, $z);
}
sub _RGB2XYZitu {
my ($r, $g, $b) = @_;
return (
0.431*$r + 0.342*$g + 0.178*$b,
0.222*$r + 0.707*$g + 0.071*$b,
0.020*$r + 0.130*$g + 0.939*$b
);
}
sub _XYZitu2RGB {
my ($x, $y, $z) = @_;
return map { $_ > 1 ? 1 : $_ } (
3.063*$x - 1.393*$y - 0.476*$z,
-0.969*$x + 1.876*$y + 0.042*$z,
0.068*$x - 0.229*$y + 1.069*$z
);
}
sub _cuberoot {
my $x = shift;
return 0 if $x == 0;
my $sign = ($x < 0) ? -1 : 1;
$x *= $sign;
return $sign * exp(log($x)/3.0);
}
sub _cube {
my $x = shift;
return 0 if $x == 0;
my $sign = ($x < 0) ? -1 : 1;
$x *= $sign;
return $sign * exp(3 * log($x));
}
을가 ImageMagick이 작동하지 않는 경우 - 거기 CPAN 모듈이를 위해 그리고 RGB Lab
나에게 Graphics::ColorObject을 준 내 첫 번째 작은 시도 검색 할 수 있습니다.
my $color = Graphics::ColorObject->new_RGB([0.5, 0.42, 0.17]);
my ($L, $a, $b) = @{ $color->as_Lab() };
이것은 정확히 코드가 실행되어야하는 모든 시스템에서 사용할 수없는 패키지이다. (그러나 +1 접근법을 사용한다.) – Thariama
미안하다. 그것 듣는다. – memowe
@Thariama 기본적으로 설치되지 않습니다. 2005 년 이후로 업데이트되지 않았다는 것을 고려하면 매우 많은 [버그] (https://rt.cpan.org/Public/Dist/Display.html?Name=Graphics-ColorObject)가 없다. 또한 순수하다. 펄, 그래서 당신이 그것을 설치하는 데 어려움이 없어야합니다. (프로젝트 디렉터리에 복사해야하는 경우에도 마찬가지입니다.) –
이 질문이 진짜 질문이 아닌 이유를 알고 싶습니다. 나는 내가 원하는 것을 분명히 정의했다. – Thariama
일부 고객 설치에서는 사용하지 못할 수도 있습니다. 다른 패키지를 사용하지 않고도 해결책을 찾고있었습니다. 우리는 많은 작업에 imagemagick을 사용하고 있습니다. 나는 이것을 위해 perl imagemagick API를 사용할 방법이 있는지를 알기 위해 interessted되었다. – Thariama
@pmakholm : 그건 질문을 끝내기위한 어리석은 근거입니다. OP는 그가 심지어 대체 모듈을 받아들이지 않을 것이라고 말하지 않았다. – Borodin