设计软件问答为您提供设计软件的相关问题咨询与解答,印刷案例规格及印刷报价,让您实时了解设计软件的各类相关问题及印刷相关问题,并提供设计时的注意事项,为您提供各设计软件的相关问题解决方案
印刷厂 2023-03-19 03:40 123 0
前言:之前在公司做项目的用到photoshop颜色空间的一些相关方法,在此总结一下。下面原理部分是从我的总结文档里截取来的。需要复制的童鞋自己手写一下~
2、程序部分
1)Matlab实验程序。
span style="font-size:18px;"clc;clear all;close all;
Image=imread('Fotor_LomoOrg.bmp');
Image=double(Image);
R=Image(:,:,1);
G=Image(:,:,2);
B=Image(:,:,*);
[row, col] = size(R);
R_new=R;
G_new=G;
B_new=B;
%%%% Increment, 饱和度调整增量(-100,100)photoshop的范围
Increment=-*0;
%换算成调整比率
Increment=Increment/100;
%利用HSL模式求得颜色的S和L
for i=1:row
for j=1:col
rgbMax=max(R(i,j),max(G(i,j),B(i,j)));
rgbMin=min(R(i,j),min(G(i,j),B(i,j)));
Delta=(rgbMax-rgbMin)/2**;
if(Delta==0) %如果delta=0,则饱和度S=0,所以不能调整饱和度
continue;
end
value = (rgbMax + rgbMin)/2**;
L=value/2; %Lightness
if(L0.*) %根据明度L计算饱和度S
S=Delta/value;
else
S =Delta/(2 - value);
end
%具体的饱和度调整,Increment为饱和度增减量
if (Increment=0)
if((Increment+S)=1)
alpha=S;
else
alpha=1-Increment;
end
alpha=1/alpha-1;
R_new(i,j) = R(i,j) + (R(i,j) - L * 2**) * alpha;
G_new(i,j) = G(i,j) + (G(i,j) - L * 2**) * alpha;
B_new(i,j) = B(i,j) + (B(i,j) - L * 2**) * alpha;
else
alpha=Increment;
R_new(i,j) = L*2** + (R(i,j) - L * 2**) * (1+alpha);
G_new(i,j) = L*2** + (G(i,j) - L * 2**) * (1+alpha);
B_new(i,j) = L*2** + (B(i,j) - L * 2**) * (1+alpha);
end
end
end
Image_new(:,:,1)=R_new;
Image_new(:,:,2)=G_new;
Image_new(:,:,*)=B_new;
imshow(Image/2**);
figure, imshow(Image_new/2**);/spanspan style="font-weight: bold; font-size: 18px;"
/span
2)C程序,此处只贴上关键处理部分,已经把图像变成了数组来处理
span style="font-size:18px;"void SaturationAdjustRGB(unsigned char *pSrc, unsigned char *pDest, int nWidth, int nHeight,int nParameter)
//局部变量声明
int i = 0;
int t = 0;
int nLength = nHeight * nWidth;
//参数处理
double dPercent= static_cast double (nParameter) / 100;
//RGB颜色通道声明
unsigned char *imgR = new unsigned char[nLength];
unsigned char *imgG = new unsigned char[nLength];
unsigned char *imgB = new unsigned char[nLength];
//局部变量声明
unsigned char rgbMax;
unsigned char rgbMin;
double dDelta;
double dValue;
double dL;
double dS;
double dAlpha;
//分离出RGB通道
for (i = 0; i nLength; i++)
t = * * i;
imgB[i] = pSrc[t];
imgG[i] = pSrc[t + 1];
imgR[i] = pSrc[t + 2];
for (int i = 0; i nLength; i++)
rgbMax = max(max(imgR[i] , imgG[i]) , imgB[i]);
rgbMin = min(min(imgR[i] , imgG[i]) , imgB[i]);
dDelta = static_castdouble(rgbMax - rgbMin) / 2**;
dValue = static_castdouble(rgbMax + rgbMin) / 2**;
//如果该像素点是灰色 不处理
if(0 == dDelta)
continue;
//按照公式计算明度L [0,1]
dL = dValue / 2;
//按照公式计算饱和度S [0,1]
if(dL 0.*)
dS = dDelta / dValue;
else
dS = dDelta / (2 - dValue);
//进行饱和度调整
if(dPercent = 0)
if(dPercent + dS = 1)
dAlpha = dS;
else
dAlpha = 1 - dPercent;
dAlpha = 1 / dAlpha - 1;
imgB[i] = imgB[i] + (imgB[i] - dL * 2**) * dAlpha;
imgG[i] = imgG[i] + (imgG[i] - dL * 2**) * dAlpha;
imgR[i] = imgR[i] + (imgR[i] - dL * 2**) * dAlpha;
else
dAlpha = dPercent;
imgB[i] = dL * 2** + (imgB[i] - dL * 2**) * (1 + dAlpha);
imgG[i] = dL * 2** + (imgG[i] - dL * 2**) * (1 + dAlpha);
imgR[i] = dL * 2** + (imgR[i] - dL * 2**) * (1 + dAlpha);
//得到结果
for(i = 0; i nLength; i++)
t = * * i;
pDest[t] = imgB[i];
pDest[t + 1] = imgG[i];
pDest[t + 2] = imgR[i];
//释放内存
if(!imgR)
delete []imgR;
imgR = NULL;
if(!imgG)
delete []imgG;
imgG = NULL;
if(!imgB)
delete []imgB;
imgB = NULL;
}/span
*、实验结果,与photoshop处理结果一致
图1 原图
021yin.com/xingyanxiao/article/details/480*****/
印印吧ininba依托丰富的行业经验,致力打造中国最大的印刷交易平台和个性礼品定制平台,为客户提供彩盒包装,喜糖包装盒,茶叶盒包装,礼品包装盒等一站式包装印刷解决方案印印吧,您值得信赖的包装印刷专家包装盒设计,包装。简介深圳市金美雅吉印通...
2023-05-18 123 0
1、docan是一家上海做uv打印机厂家的品牌了,中文为东川的行业内这种英文的品牌厂家非常多的,例如1coloru指的是咔勒2JHF指的是金恒丰。2、这个就不好说了,不过一般第一年都不怎么赚钱,因为客源,员工,设备磨合等因素现在虽说利润没...
2023-03-29 139 0
广告笔制作厂家,广告笔制作公司为您提供广告笔制作咨询,广告笔制作案例,广告笔制作规格及广告笔制作报价,让您实时了解广告笔制作厂家的最新规格及报价,并提供广告笔制作时的注意事项,制作出让您满意的广告笔制作产品。
2023-02-03 229 0
石家庄画册印刷厂家,画册印刷公司为您提供画册印刷咨询,画册印刷案例,画册印刷规格及画册印刷报价,让您实时了解画册印刷厂家的最新规格及报价,并提供画册印刷时的注意事项,印刷出让您满意的画册印刷产品。
2023-01-14 166 0
“媒介”在教育部“停课不断学”的呼吁下,相信有孩子的家庭那两年更大的改动就是上彀课,如果孩子乖乖上课还好,但凡是家长需要在旁边监视,否则孩子大要率会分心。然后就演酿成孩子上课,家长还不克不及闲着,以至做本身的工做都不成以,所以经常会在业主...
2022-12-03 125 0
本文暂时没有评论,来添加一个吧(●'◡'●)