`

matlab绘制色盘&色调混合模式

阅读更多
1、绘制色盘
代码统一放到最后。
结果如下




2、色调(hue)混合模式
叶明大神的用色调混合模式降低某一色彩的饱和度的文章:http://zhuanlan.zhihu.com/yeming/19978302
主要步骤为,新建一个待降低饱和度的色彩的图层,反相,图层混合模式改为色相,图层不透明度改为50%以下。

除了色调模式外此外,单色图层单色图层还可以使用以下混合模式http://zhuanlan.zhihu.com/yeming/19988663
  • 正片叠底:给高光部分着色
  • 滤色:    给阴影部分着色
  • 柔光:   整体着色,但比正常模式柔和





色调混合模式使用混合色的色调、基色的饱和度和明度。
但是,,,,PS中的色调混合模式不完全是这样的。。。
这里有个别人实现的结果与PS做对比,可以发现PS中优化了不少!http://www.cplotts.com/2009/11/29/blend-modes-hue-saturation-color-and-luminosity-with-wpf-4-0/


本文仅从理论上简单做个理论验证。
使用的公式是
xb=x*opacity+(1-opacity)*xs; 
yb=y*opacity+(1-opacity)*ys;


也就是把一个颜色中的色调、饱和度当做一个二维向量根据不透明度加权求和。
这么一来,饱和度也是要变的!!(PS中也会变)应该是合成向量所示的饱和度再乘以基色的饱和度。(这个没实现。)
不透明度为0.5时的一组使用色调混合模式引起的色彩偏移如下图所示:






代码:
function [colorDiskRGBImage,X,Y]=lcColourDisk(r)
% 生成色盘图像
%r: 色盘半径-0.5。即色盘直径为2r+1
%输出:
%colorDiskRGBImage 色盘图像,为(2r+1)*(2r+1)大小的。
%X:与色盘图像大小一样,对应于色盘图像中每个像素的x坐标。
%Y::与色盘图像大小一样,对应于色盘图像中每个像素的y坐标。

if(nargin==0)
    r=400;
end


%生成坐标网格
x=-r:r;
x=x/r;%归一化到区间[-1,1]
y=x;
[X,Y]=meshgrid(x,y);


%生成hue
theta=atan2(Y,X);
theta(theta<0)=theta(theta<0)+2*pi;
hue=theta/2/pi;


%生成saturation
saturation=sqrt(X.^2+Y.^2);
saturation(saturation>1)=0;%将位于色盘外的部分设置成没有颜色


%生成value
value=ones(size(X));

imHSV=cat(3,hue,saturation,value);

colorDiskRGBImage=hsv2rgb(imHSV);

if(nargout==0)
    colorDiskRGBImage=flipud(colorDiskRGBImage);  %注意matlab中y轴方向朝下,与一般情况不同,所以要翻转一下y坐标。
    imshow(colorDiskRGBImage);
end

end




function blendHue(hueToBlend,opacity,colorDisk,X,Y,NPoints)
%绘制色调混合模式下的色彩偏移图像
%hueToBlend:  混合色色调,[0,1]
%opacity: 混合色的不透明度
%colorDisk,X,Y 为lcColourDisk的输出
%NPoints: 基色的点数
d=size(colorDisk,1);
r=floor(d/2);
center=ceil(d/2);

theta=hueToBlend*2*pi;
thetas=linspace(0,2*pi,NPoints);%选N个点作为基色

% thetaDiff=thetas-theta;
% thetaDiff(thetaDiff<0)=thetaDiff(thetaDiff<0)+2*pi;
% thetaDiff(thetaDiff>pi)=thetaDiff(thetaDiff>pi)-2*pi; %保证角度在[-pi, pi]之间
% thetasBlended=theta+thetaDiff*(1-opacity);




% factor=1;
[x y]=theta2xy(theta,center,r);

[xs ys]=theta2xy(thetas,center,r);
xb=x*opacity+(1-opacity)*xs;
yb=y*opacity+(1-opacity)*ys;



imshow(colorDisk);
hold on

plot(x,y,'ok')
%quiver(center,center,xh-center,yh-center,0,'k');


plot(xs,ys,'*k')
 plot(xb,yb,'pk');
quiver(xs,ys,xb-xs,yb-ys,0,'k');

legend('混合色','基色','结果色')
t=['色调混合模式下混色结果:opcacity=' num2str(opacity)];
title(t)
axis xy  %设置坐标轴y方向从下到上!!
end

function [x,y]=theta2xy(theta,center,r)
x=center+r*cos(theta);
y=center+r*sin(theta);
end




%hue混合模式绘图的入口程序
close all
[colorDisk,X,Y]=lcColourDisk(400);

hueToBlend=0;

opacity=0.5;
Npoints=21;

blendHue(hueToBlend,opacity,colorDisk,X,Y,Npoints)
  • 大小: 34.8 KB
  • 大小: 67.8 KB
分享到:
评论

相关推荐

    React-Native关于色盘的绘制

    HSV模型特别适合于创建色盘,因为它将颜色空间划分为色调、饱和度和明度三个独立的维度,使得用户可以直观地调整颜色。 在React-Native中,我们可以利用第三方库如`react-native-color-picker`来实现色盘组件。这个...

    C++ HSB模型绘制调色板

    在本项目中,"C++ HSB模型绘制调色板"是通过利用C++编程语言,结合Win32 API绘图函数以及理解BMP文件格式,来实现模拟Photoshop调色板的效果。HSB(Hue、Saturation、Brightness)模型是一种色彩表示方式,它以色调...

    可通过 RGB 值定位的色盘

    3. **界面渲染**:使用Canvas类进行自定义绘图,绘制色盘和颜色指示器。Canvas提供了丰富的绘图方法,如drawColor()用于填充颜色,drawCircle()或drawRect()用于绘制选色指示器。 4. **aar库的构建**:将色盘控件的...

    HTML色盘 网页编程色盘

    网页编程要用的色盘 很有用的哦 我们上课的时候就要用的

    PS色盘插件cooloruscc.zip

    《PS色盘插件Cooloruscc:提升调色艺术的新工具》 在数字图像处理领域,Adobe Photoshop(简称PS)无疑是最具影响力的工具之一,它的强大功能和灵活性深受设计师们的喜爱。而今天我们要探讨的是一个针对Photoshop的...

    android 色盘选择 RGB值

    // 绘制色盘 for (int i = 0; i ; i++) { float hue = i / 360f; int color = Color.HSVToColor(new float[]{hue, 1f, 1f}); drawColorSector(canvas, color, i * (360f / sectorsCount), (i + 1) * (360f / ...

    swift-自定义色盘选择控件

    开发者需要重写`draw(_:)`方法,绘制出颜色盘的图案。此外,可能还需要处理触控事件,以便用户可以通过触摸屏幕来选择颜色。 3. **色彩模型**:在实现色盘选择时,需要理解色彩模型,如RGB、HSV或HSL。这些模型用于...

    W3C色盘

    【W3C色盘】是Web开发者和设计师们常用的一款工具,它基于World Wide Web Consortium(简称W3C)的标准,旨在提供一个统一且规范的颜色选取参考。这个工具可以帮助用户在设计网页、创建图形或者进行色彩搭配时,...

    mstar色盘文件

    系统UI设计的色盘文件,喜欢设计mstar和凌阳UI的可以试试

    Android获取RGB颜色 Android色盘选择

    "Android获取RGB颜色 Android色盘选择"这个主题主要涉及如何在Android应用中获取图像或颜色选择器中的RGB(红绿蓝)值,以及如何解决可能遇到的颜色获取不准确的问题。下面我们将深入探讨相关知识点。 首先,RGB...

    MFC Windows 程序设计之取色盘

    MFC Windows 程序设计之取色盘,适合初学MFC的小伙伴学习研究,博客中有对应的讲解和演示,避免走弯路,费时费力。也真心希望能够帮助正在苦学MFC Windows 程序设计的小伙伴们,你们的成长是我最大的幸福。

    matlab 动画制作 课件 - 台湾清华大学

    范例6-2(movie02.m)展示了如何将peaks函数绘制在圆盘上,并通过改变函数的高度来实现动画效果,即曲面随着时间逐渐改变形状。 3. **色盘变换**: 除了改变图形本身,还可以通过调整颜色映射(colormap)来创造...

    Photoshop 色盘

    photoshop 插件 色盘 便于绘画取色十分方便

    Coolorus色盘

    《Coolorus色盘:为Photoshop增添色彩灵感与高效配色工具》 在数字艺术设计领域,颜色选择是至关重要的一步,它不仅影响作品的视觉效果,还直接关乎到传达的信息和情感。Photoshop作为业界广泛使用的图像处理软件,...

    HSB和HSL模式的颜色板实现

    当前的实现版本中,支持HSB色彩模式和HSL色彩模式。没有使用canvas去实现,完全是以DIV的方式去做的实现。没有做太多的封装,仅仅是函数定义的方式。使用的时候只要调用函数即可,使用起来也很简单,就做了简单的几...

    Mac Google Material 取色盘,设计师必备.zip

    【Mac Google Material 取色盘】是一款专为设计师打造的颜色选取工具,基于Google的Material Design设计规范。Material Design是Google提出的一种系统化、统一的设计语言,它强调清晰的层次结构、直观的交互以及富有...

    MATLAB入门简单动画制作PPT学习教案.pptx

    MATLAB作为一款强大的数值计算和数据分析工具,同时也提供了丰富的图形绘制功能,包括创建动态的、引人入胜的动画。本教程主要介绍了MATLAB入门级别的动画制作方法,分为电影方式和对象方式两种。 **6-1 MATLAB动画...

    前端canvas案例,色盘、颜色过渡。htm+js实现。双击浏览器打开即可看效果

    内容概要:canvas案例,色盘、颜色过渡。 实现技术:htm+js实现。双击浏览器打开即可看效果 能学到什么:canvas技术 适用人群: 前端canvas学习新手 阅读建议:支持canvas的浏览器

    MATLAB入门之动画制作.ppt

    MATLAB动画制作入门篇 MATLAB是一种功能强大的计算软件,广泛应用于科学计算、数据分析、可视化等领域。MATLAB动画制作是MATLAB的一种重要应用,通过动画可以直观地展示数据的变化过程,提高数据分析和可视化的效果...

    Android例子源码色盘选择返回RGB颜色值

    这个"Android例子源码色盘选择返回RGB颜色值"就是一个简单的实现,它可以帮助开发者理解如何在应用程序中实现这一功能。下面我们将详细讲解相关的知识点。 首先,我们要知道Android系统提供了`ColorPicker`类,用于...

Global site tag (gtag.js) - Google Analytics