In I-part yokuqala yesixhobo, siqonde iingcebiso ezisemgangathweni ze-colour correction kunye nokuxhomekeka ukutya kwimibala. Kwi-part yesibini, sinxulumene iingcebiso ezininzi ezihlangeneyo, njenge-differences phakathi kwe- RGB kunye ne-LAB imodeli yemibala, kunye ne-process ye- yokuvelisa iipalethe kwiifoto kunye nokusetyenziswa kwabo ukuze zibonise i-vis
Ngexesha elandelayo, ezinye imibala kunye ne-palette zibonakalisa nangokufumaneka ekuqaleni. Oku kubangela ukuba usebenzise izixhobo ezincinci - i-RGB model kunye ne-Euclidean distance calculation. Ngokuba iinkqubo ezininzi ezihlangeneyo, sincoma into engaphezulu kakhulu.
Ndiya wokuqala, inqaku le-theory.
Imodeli yeRGB
Amamodeli amabala amabili kakhulu - RGB kunye LAB - ziyafumaneka ngokufanelekileyo kwiindlela zokubonisa kunye nokuthintela imibala.
I-model RGB isebenzisa i-canals Red, Green, kunye ne-canals Blue ekubonisa imibala. Yonke i-canal ingaba kwi-values ezisuka kwi-0 ukuya kwi-255, okuholela kwi-16 million imibala ezikhoyo. Le model iyona elungileyo yokusebenza kunye nemibala ezibonakalayo kwi-screens, njengoko i-computer monitors, i-TV, kunye ne-smartphones zithatha le model.
Izixhobo zeRGB:
- Kusetyenziswa inkqubo additive apho imibala ifumaneka ngokuxhomekeka umngciwane omnyama, omnyama, kunye nomnyama.
- I-pixel isetyenziswa ngempumelelo kunye nokucubungula kwi-pixel.
- I-li>I-capacity yayo yokubonisa zonke imibala ngokufanelekileyo, njengoko ayifumaneka kwimibala yabantu.
I-LAB Model
Imodeli ye LAB ibonisa umbala kwiintlobo ezintathu: L (ukukhanyisa), A (i-spectrum ye-colour ukusuka kwi-green ukuya kwi-red), kunye B (i-spectrum ye-colour ukusuka kwi-blue ukuya kwi-yellow). Le model ibekwe ngokufanelekileyo kwimibala yabantu kwaye ibekwe kunye nokukhanyisa umfanekiso.
I-LAB Izici:
-
I-channel L ivimbela ubushushu, okuvumela ukuguqulwa kwe-lightness ngaphandle kokuguqulwa kwimibala.
-
I-channel A kunye ne-B zibonisa iintlobo ze-color, okuvumela ukulawula ngokukhawuleza kwi-spectrum ebandayo ye-colour.
I-LAB model iyasetyenziselwa ngokukhawuleza kwimibala ye-professional njengoko inokufanelekileyo kwaye ivumela ukuguqulwa kwe-colour ngokukhawuleza ngaphandle kokuphendula ezinye iiparamitha ze-image.
Kwi-LAB model, i-brightness ifumaneka kwi-colour, okuvumela ukulungiselela iiparamitha ze-visual ye-image ngaphandle kokuphendula i-color balance yayo. Oku kuholela ukuguqulwa kwe-colour ezininzi kunye ne-natural.
I-Color Calculation Algorithm kunye nokusetyenziswa kwe-LAB
Ukuvelisa kunye nokuvelisa imibala, isicelo lethu isebenzisa i colorjs.io library, leyo isebenza ngempumelelo kunye nemibala kwimodeli ye-LAB. Ukusebenza le library kwiprojekthi kunokukwazi ukwenza iingcebiso ezifanelekileyo eziza kufumana imiphumela efanelekileyo xa usebenzise iifoto.
Indawo yeenkcukacha esetyenziswa kwi-app yethu ekusebenziseni imibala kwimodeli ye-LAB:
// Sample code for using colorjs.io in LAB model
const findClosestColor = (r, g, b) => {
if (mode === "lab") {
const color1 = new Color({ coords: [r / 255, g / 255, b / 255], space: "srgb" }).to("lab");
let minDist = Infinity;
let closest = [r, g, b];
for (let i = 0; i < paletteLAB.length; i++) {
const color2 = paletteLAB[i];
const dist = color1.distance(color2); // Calculating the distance between colors in LAB space
if (dist < minDist) {
minDist = dist;
closest = palette[i];
}
}
return closest;
} else {
// RGB calculations
let minDist = Infinity;
let closest = [r, g, b];
for (let [pr, pg, pb] of palette) {
const dist = Math.sqrt((r - pr) ** 2 + (g - pg) ** 2 + (b - pb) ** 2);
if (dist < minDist) {
minDist = dist;
closest = [pr, pg, pb];
}
}
return closest;
}
};
I-block ye-code ithatha inkqubo yokufumana umbala elidlulileyo kwi-palette eyodwa ngokucacisa i-colour distance phakathi kwe-colour target kunye ne-colours kwi-palette. I-methode yokucaciswa isekelwe kwi-mode ebonakalayo, okanye RGB okanye LAB.
Yintoni oku kuthetha:
-
I-LAB Mode: I-LAB color space yenzelwe ukunxibelelana ne-human vision, ukwahlukanisa i-brightness (L) kwi-components ye-chromatic (A kunye ne-B). Xa ukwahlukanisa imibala kwi-LAB, i-algorithm ibonelela ukuba imibala zihlanganiswa ngexabiso ngokufanelekileyo, nto leyo ibonelela ukuba sincoma indlela yokuthandwa imibala, kwaye akuyona kuphela i-RGB mathematical difference.
-
RGB Mode: I-RGB color space ibonelela kuphela umbala ngexabiso ngexabiso we-red, green, and blue light.
Kwi-colour grading kunye ne-image processing professional, ukwahlukanisa iintlobo ngokuxhomekeke LAB kuyinto elungileyo kakhulu ngenxa yokuguquka indlela eyona umntu unokufumana iintlobo, okuvumela iziphumo ezininzi ezininzi ezibonakalayo kunye nezibonelelo. Ukusebenzisa le nkqubo, isicelo inokufumana ukuzinza okungcono xa isicelo iipalethe zeintlobo kwiimifanekiso, okuvula ukuxhaswa iintlobo kwiintlobo ezifakiweyo.
I-Optimization Challenge: I-LAB Computation
Ukwenza nge LAB imidwebo umbala kufuneka ubuninzi ezininzi iinkcukacha zokusebenza kunokuba ukusebenza nge RGB. Oku ngenxa yokuba, kwi-LAB, umbala ngamnye ayibonakalisa kuphela kwiintlobo ezintathu (RGB), kodwa kuquka izicwangciso ezongezelelweyo ukufumana iinkcukacha umbala kunye neengxaki zayo.
Ukuvelisa le nqubo, sisetyenziswa i-caching ye-palette ye- ukunceda ukucaciswa kwe-redundant. I-palettes eyenziwe kwi-mode ye- LAB ye- zithunyelwe kwimemori, kwaye ukuba isithombe ayikho imibuzo, le nkqubo ayikwazi ukucacisa kwakhona i-palette. Oku kukunceda ukucacisa kakhulu inqubo, ikakhulukazi xa kusetyenziswa i-palettes kwiifoto ezininzi, ngokuvumela ukusetyenziswa kwedatha ze-precalculated ngaphandle kokufumana iifayile ezininzi ezininzi.
// Optimization with palette caching const extractPalette = () => { if (!image || image === lastExtractedImageRef.current) return; // Check for changes const img = new Image(); img.src = image; img.onload = () => { const canvas = document.createElement("canvas"); const ctx = canvas.getContext("2d"); canvas.width = img.width; canvas.height = img.height; ctx.drawImage(img, 0, 0); const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height).data; const colorMap = new Map(); // Creating a color map for (let i = 0; i < imageData.length; i += 4) { const key = `${imageData[i]},${imageData[i + 1]},${imageData[i + 2]}`; colorMap.set(key, (colorMap.get(key) || 0) + 1); } const sorted = Array.from(colorMap.entries()).sort((a, b) => b[1] - a[1]); const topRaw = sorted.map(([str]) => str.split(",").map(Number)); const topColors = filterColors(topRaw).slice(0, 10); const randomId = Math.floor(10000 + Math.random() * 90000); const name = `Palette_${randomId}`; setPalettes(prev => ({ ...prev, [name]: topColors })); setSelectedPalette(name); lastExtractedImageRef.current = image; // Saving cache }; };
Le ngcono kusiza ukuvelisa ukusebenza kwe-application, ikakhulukazi xa usebenzise iifoto ezininzi ezifanayo ezininzi.
Izixhobo ze-Palette kunye ne-Application
I-Palette Extraction yi-process ye-identification yeentsimbi ezininzi ezininzi ezininzi ezininzi ezininzi ezininzi ezininzi ezininzi ezininzi ezininzi ezininzi ezininzi ezininzi ezininzi ezininzi ezininzi ezininzi ezininzi ezininzi ezininzi ezininzi ezininzi ezininzi ezininzi ezininzi ezininzi ezininzi ezininzi ezininzi ezininzi ezininzi ezininzi ezininzi ezininzi ezininzi ezininzi ezininzi ezininzi ezininzi ezininzi ezininzi ezininzi ezininzi.
I-Mechanism yokuqala yokuvelisa i-palette ifumaneka kulandelayo:
const extractPalette = () => { // Check for image changes if (!image || image === lastExtractedImageRef.current) return; const img = new Image(); img.src = image; img.onload = () => { const canvas = document.createElement("canvas"); const ctx = canvas.getContext("2d"); canvas.width = img.width; canvas.height = img.height; ctx.drawImage(img, 0, 0); const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height).data; const colorMap = new Map(); // Counting the frequency of occurrence of each color for (let i = 0; i < imageData.length; i += 4) { const key = `${imageData[i]},${imageData[i + 1]},${imageData[i + 2]}`; colorMap.set(key, (colorMap.get(key) || 0) + 1); } // Sorting by frequency and filtering similar colors const sorted = Array.from(colorMap.entries()).sort((a, b) => b[1] - a[1]); const topRaw = sorted.map(([str]) => str.split(",").map(Number)); const topColors = filterColors(topRaw).slice(0, 10); // Segmentation and filtering const randomId = Math.floor(10000 + Math.random() * 90000); const name = `Palette_${randomId}`; // Saving the palette setPalettes(prev => ({ ...prev, [name]: topColors })); setSelectedPalette(name); lastExtractedImageRef.current = image; }; };
Lesi ikhowudi isetyenziswa ukufumana i-palette kwi-image, apho imibala ifilimu yi-brightness kunye ne-difference. Ngokusebenzisa le nkqubo, unokufumana ngokukhawuleza iimibala ezininzi ezibonakalayo yokusetyenziswa kwakhona.
Sibandakanya i-automatic name generation ye-pallet eyenziwe ukuze akufutshane ukuxhaswa kwe-user interface ngeengcingo ezincinane.
I-Custom Palettes
Enye izixhobo kwi-application yethu i-custom palette creation block. Le nkqubo ivumela abasebenzisi ukwakha i-palettes ezifanelekileyo kwiiprojekthi ezahlukeneyo, ukunika ukulawula ngokupheleleyo kwiimibala.
Ixesha lokufumana umbala nge-interface HexColorPicker. Umdlali angakwazi ukhethe umbala kwi-image okanye kwi-source ye-external. Yonke umbala olufunyenwe ngokuthe ngqo kwi-colour list ye-user, apho i-palette ifumaneka.
Ngemuva kokukhetha imibala emininzi, i-palette ingasetyenziswa nge-imeyile ye-custom. Emva koko, ingasetyenziswa kwimifanekiso ebhalisiweyo ukufumana umgangatho we-visual.
I-Color Neutralization kunye ne-Color Palettes
I-Color Neutralization kunye ne-Color PalettesI-Color Neutralization yindawo ebalulekileyo ye-color rating kwaye ithatha umdlalo enzima kwi-post-production ye-film. I-process apho iisebenze okanye iifoto ezivela kwiimeko ezahlukileyo ezahlukileyo zihlanganisa iintlobo ezahlukileyo zithunyelwe kwiintlobo ezahlukileyo ezahlukileyo. Oku kwenziwa ngokuvamile ukuze kuqinisekise i-visual style eyahlukileyo kwi-movie kunye nokwenza iisebenze ezahlukileyo ngokufanelekileyo, ngaphandle kweemeko ze-shooting.
Ndiyathola njani iipalethi ezisetyenziswa ngeengxaki ezimbini ezibonakalayo ze-filmic visual language.
I-Palettes kwi-movie “The Matrix”
I-movie "I-Matrix" (1999), ebizwa ngokuthi abalandeli we-Wachowski, iye yenzelwe yi-iconic ngenxa ye-visual style yayo, ebandakanya i-greenish colour palette. Le style ye-colour yenzelwe ukubonisa kwimveliso yedijithali apho ama-characters eziphambili zihambe. Iimiphumo ze-visual ye-movie ziye ziye ziye ziye ziye ziye zibonise umdla we-virtuality, apho imibala ye-cold kunye ne-mechanical zihlala.
Imibala ezininzi: Green, black, metal.
I-Application:
-
I-Extracting Green Tones: Ukwenza i-Matrix -style palette, sinokukwazi ukufumana zonke iintlobo ze-green, black, kunye ne-gray kwifoto. Ngokusetyenziswa kweziintlobo, sinokufumana i-effect ye-"digital reality" ezibonakalayo ye-movie.
Nge-app yethu, oku kungenziwa nge-filtering ye->strong by brightness and distance, ukugcina kuphela iintlobo ze-green kunye nokunciphisa ezinye iintlobo.
-
Ukusetyenziswa kwi-New Images: Xa kusetyenziswa kw
I-Palettes in Wes Anderson's Works
Wes Anderson iye yaziwa ngenxa yayo izixazululo zangaphakathi, ezincinane kunye ne-simmetric visual. Iimpawu zayo, ezifana "The Grand Budapest Hotel", "Moonrise Kingdom", kunye "The French Dispatch", zonke ziyi-signature yayo, ebonakalayo kwiintlobo ze-pastel kunye ne-pallets ezahlukileyo ezahlukileyo. Enye ingxenye yokuqala yeifilimu zayo i-harmony kunye ne-contrast kwi-colour design.
Imibala ezininzi: Imibala zePastel, imibala emangalisayo, ebomvu, yellow, i-turquoise, i-green.
I-Application:
-
I-Extracting Pastel Shades: Kwiifilimu ze-Wes Anderson, i-pastel iye isetyenziswe ngokubanzi. Umzekelo, iintlobo ze-rosa, i-blue, kunye ne-orange. Singakwazi ukuvelisa iintlobo ze-pastel kwaye isetyenziswe kwifoto entsha ukuze kwenziwe isiphumo efana ne-vintage photography okanye ukucindezela umoya we-stylized.
Kwi-app yethu, singakwazi ukuvelisa i-palette kwiifoto ngokucacisa iintlobo ngokucacileyo kunye ne-contrast, ukugcina kuphela iintlobo ze-pastel ezincinci.
Ndiya ukuba sinokufumana iipalethi evela kwi-references, ixesha lokucoca!
Kuba usebenzisa iipalethi ezininzi kwiintlobo zeentsimbi kwaye usebenzisa isicelo yethu kwi-browser (okuthi usebenzisa izixhobo ezincinane ze-calculation), akufuneka ukhangela imiphumo emangalisayo. Nangona kunjalo, oku kuthathazeki ukubonisa iziseko ezisemgangatho zokwenza iipalethi kwi-color grade.
Indawo iifoto ezijoliswe kwimeko RGB kunye ne-LAB.
I-Extracting and Applying Palettes yindawo ebalulekileyo yokwenza i-styles ye-visual, ezifana ne-Matrix, i-Wes Anderson, okanye i-Denis Villeneuve. I-app yethu inikeza isixhobo se-visual yokusebenza nge-colors enokufumana abasebenzisi ukufumana i-palettes, ukusetyenziswa kunye nokwenza iimiphumo ze-visual ezizodwa. Ngoko ke, unokufumana kalula iifoto kunye nokwenza i-look ye-visual efana neefilimu ezaziwayo.
Kwixesha lokugqibela, siya kuxhomekeke kwi-tuning kunye nokuphucula imibala.
-
-