2012-04-20 4 views
4

Kubelka-Munk function 천연 페인트와 같은 색상을 어디서 발견하거나 구현할 수 있습니까? Emanuelle Tamponi implemented this function in Krita, 오픈 소스 프로젝트이지만이 방법이나 유사한 방법이 '자연스럽게'혼합 된 색상으로 공유되는 곳을 찾을 수 없습니다. 그것은 상업적으로 민감하거나 사적인 것일 수도 있지만, 묻지 않으면 알아 내지 못할 것입니다!페인트와 같은 색상 (색상)을 혼합하기 위해 Krita와 같은 Kubelka-Munk 구현

+0

누군가가 코코아에서 이것을 구현했는지 묻는 중입니까? 이 기능 자체는 Google을 통해 쉽게 찾을 수 있습니다 (http://www.chemistry.nmsu.edu/studntres/chem435/Manuals/Cary_100/Cary_100_app_maths/source/app_maths/mt_kubelka_munk_function.htm). –

+0

좋은 얼룩. 아니요.이 기능을 사용하여 색상을 자연스럽게 혼합하는 방법 (예 : 동영상에 표시되는 방법)을 묻습니다. 까다로운 부분은 rgb 값을 함수의 입력으로 변환하는 것입니다. – glenstorey

+1

기도 - 왜 그 -1? – glenstorey

답변

4

우리가 krita에 가지고있는 코드를 자유롭게 재사용하십시오. 그것은 calligra/krita/plugins/extensions/painterlyframework에 있습니다. 그것은 백업으로 안료 라이브러리가 필요하지 않지만, 당신은 쉽게 그것으로부터 멀리 추상화 할 수 있다고 생각합니다.

그러나 코드는 GPLv2 + 라이센스하에 있습니다. 코드 또는 광원 파일을 다시 사용하는 경우 코드도 GPL이어야합니다.

(자세한 내용은 [email protected] 또는 [email protected]로 연락하십시오. 저는 Krita의 관리자입니다).

+0

답변 해 주셔서 감사합니다. 나는 일주일 동안 떨어져 있지만 그 후에 이메일을 보낼 것이다. – glenstorey

+0

구현 했습니까? 나는 지금 같은 문제에 대해 작업 중입니다 ... –

+0

이게 더 이상 현재의 Krita 코드에없는 것 같아요, Krita의 다른 무언가로 진화 했나요? 디지털 컬러 믹서가 가장 가까운 것으로 보입니다. –

2

다음은 단순화 된 Kubelka-Munk 모델을 사용하여 만든 구현입니다. 블렌딩 할 때 모든 색상의 농도가 같고 모든 색상이 불투명하다고 가정합니다. 유용하다면 원하는 방식으로 자유롭게 사용하십시오.

https://github.com/benjholla/ColorMixer

+0

컬러 믹서 구현을 공유해 주셔서 감사합니다. 그러나, 나는 그것이 올바르게 작동하지 않는다고 생각합니다. 빨강 (255, 0, 0)을 옐로우 (255, 255, 0)와 혼합하는 경우 예를 들어 나는 종류의 오렌지색을 얻는다 : (255, 128, 0) 그러나 나는 255, 2, 1을 얻는다. 같은 붉은 색. 어떤 아이디어? 내가 뭔가 잘못하고 있는거야? –

+0

내 구현에 몇 가지 혼합 문제가있는 것처럼 보입니다. RGB 색상 공간을 RYB로 변환하여 시도했지만 해결되지 않았습니다. 나는 밖으로 뱉어 내고있는 몇 가지 색 혼합에 약간 난처한 데다. 대부분은 정확하지만 ... –

2

가 흡수하고 가시 스펙트럼에 걸쳐 산란 커브를 모두 필요로하는 진정한 Kubelka-Munk은 연산을 수행하기 위해 단독으로 RGB 값에 의해 제공된 정보가 충분하지 않다. 대신 대표 반사 값 곡선을 RGB 값에서 생성 한 다음 반사율 정보를 사용하여 예를 들어 두 반사 곡선의 가중 기하 평균을 계산하여 빼기 혼합을 수행 할 수 있습니다.

+0

이 MATLAB 코드는 sRGB를 파장 기반 분광 반사율 변환 것 같다 : '기능 반사율 = LSS (B12, sRGB를) 계산 대상 "선형 RGB"가 값 % 의 sRGB =의 sRGB를 (:)/255; 0-1 열로 변환하는 % 벡터 i = 1 : 3이면 if sRGB (i) <0.04045 rgb (i) = sRGB (i) /12.92; else rgb (i) = ((sRGB (i) +0.055) /1.055)^2.4; end end 반사율 = B12 * rgb; 매트릭스 B12가 여기에 있습니다.] (http://scottburns.us/wp-content/uploads/2015/04/B12-matrix.txt) 두 개의 sRGB 색상이 반사도 곡선으로 변환되면 곡선을 혼합합니다 (평균 또는 더 나은 것은 아직 " 가중 기하 평균 "). –

+0

으깬 코드에 대해 죄송합니다. 나는 코멘트에서 줄 바꿈을하는 방법을 알아낼 수 없다. –

+0

또한 반사율 값 중 하나라도 위의 코드에서 음수가 나오면 [다소 복잡한 버전] (http://scottburns.us/wp-content/uploads/2015/04/ILSS.txt)이 필요합니다. 사용하십시오. –

관련 문제