1. 程式人生 > 其它 >Matlab 製作圖層混合測試影象

Matlab 製作圖層混合測試影象

準備寫一個 PS 中 27 種圖層混合的 matlab 實現,需要用到測試影象,以驗證混合效果,總結混合規律,主要包括顏色測試影象和亮度測試影象。

影象的製作參考了這篇部落格,但由於技術能力有限,彩色影象的圓錐形漸變色帶沒能實現,只好用矩形代替了。

Matlab 程式碼

clear;close all;clc

h = 33; w = 11*60;
x1 = ones(h*2,w,3)*0;
x2 = ones(h*6,w,3).*(repelem(linspace(0,255,11),w/11));
x3 = ones(h*6,w,3).*(linspace(0,255,w));
x4 = ones(h*6,w,3).*(repelem(linspace(0,255,3),w/3));
X = [x1;x2;x3;x4];
figure;imshow(uint8(X))
imwrite(uint8(X),'luminosity.png')

y1= ones(h*4,w,3).*cat(3,[linspace(255,255,w/6),linspace(255,200,w/6),linspace(200,200,w/6),linspace(200,200,w/6),linspace(200,255,w/6),linspace(255,255,w/6)],...
    [linspace(200,200,w/6),linspace(200,200,w/6),linspace(200,255,w/6),linspace(255,255,w/6),linspace(255,255,w/6),linspace(255,200,w/6)],...
    [linspace(200,255,w/6),linspace(255,255,w/6),linspace(255,255,w/6),linspace(255,200,w/6),linspace(200,200,w/6),linspace(200,200,w/6)]);

y2 = ones(h*4,w,3).*cat(3,[linspace(255,255,w/6),linspace(255,0,w/6),linspace(0,0,w/6),linspace(0,0,w/6),linspace(0,255,w/6),linspace(255,255,w/6)],...
    [linspace(0,0,w/6),linspace(0,0,w/6),linspace(0,255,w/6),linspace(255,255,w/6),linspace(255,255,w/6),linspace(255,0,w/6)],...
    [linspace(0,255,w/6),linspace(255,255,w/6),linspace(255,255,w/6),linspace(255,0,w/6),linspace(0,0,w/6),linspace(0,0,w/6)]);

y3= ones(h*4,w,3).*0.4.*cat(3,[linspace(255,255,w/6),linspace(255,0,w/6),linspace(0,0,w/6),linspace(0,0,w/6),linspace(0,255,w/6),linspace(255,255,w/6)],...
    [linspace(0,0,w/6),linspace(0,0,w/6),linspace(0,255,w/6),linspace(255,255,w/6),linspace(255,255,w/6),linspace(255,0,w/6)],...
    [linspace(0,255,w/6),linspace(255,255,w/6),linspace(255,255,w/6),linspace(255,0,w/6),linspace(0,0,w/6),linspace(0,0,w/6)]);

y4 = ones(h*4,w,3).*cat(3,...
    repelem([255,0,0],w/3),...
    repelem([0,255,0],w/3),...
    repelem([0,0,255],w/3));

y5 = ones(h*4,w,3).*(...
    cat(3,repelem([0,255,255],w/3),...
    repelem([255,0,255],w/3),...
    repelem([255,255,0],w/3)));



Y = [y1;y2;y3;y4;y5];
figure;imshow(uint8(Y))
imwrite(uint8(Y),'color.png')

效果預覽