生成lut图
lut = zeros(512, 512, 3);
for by = 1 : 8
for bx = 1 : 8
b = 4 * ((by-1) * 8 + bx);
for gi = 1 : 64
for ri = 1 : 64
r = ri * 4;
g = gi * 4;
x = (bx - 1) * 64 + ri;
y = (by - 1) * 64 + gi;
lut(y, x, 1) = r;
lut(y, x, 2) = g;
lut(y, x, 3) = b;
end
end
end
end
figure,imshow(uint8(lut));
imwrite(uint8(lut), 'lut.bmp');
导入原始图片以及lut图进行转换
img = double(imread('caicai.jpeg'));
lut = double(imread('lut.bmp'));
[m, n, ~] = size(img);
dst_img = zeros(m, n, 3);
for i = 1 : m
for j = 1 : n
r = img(i, j, 1);
g = img(i, j, 2);
b = img(i, j, 3);
block_num = floor(b / 4);
by = floor(block_num /8);
bx = floor(block_num - by * 8);
ri = floor(r / 4) + 1;
gi = floor(g / 4) + 1;
y = 64 * by + gi;
x = 64 * bx + ri;
dst_img(i, j, 1) = lut(y, x, 1);
dst_img(i, j, 2) = lut(y, x, 2);
dst_img(i, j, 3) = lut(y, x, 3);
end
end
figure,imshow(uint8(dst_img));
figure,imshow(uint8(img));
imwrite(uint8(dst_img), 'result.bmp');