matlab实现PS算法之黑白照

%{
    Photoshop CS图像黑白调整功能的计算公式为:

    gray= (max - mid) * ratio_max + (mid - min) * ratio_max_mid + min

    公式中:gray为像素灰度值,max、mid和min分别为图像像素R、G、B分量颜色的最大值、
中间值和最小值,ratio_max为max所代表的分量颜色(单色)比率,ratio_max_mid则为max
与mid两种分量颜色所形成的复色比率。
%}
clear,clc;
[filename,pathname] = uigetfile('*.jpg;*.bmp','选择图片','E:\pictures\For_Project\Matlab');
imgaepath = strcat(pathname,filename);
image = imread(imgaepath);

Image=double(image);
R=Image(:,:,1);
G=Image(:,:,2);
B=Image(:,:,3);
[row, col] = size(R);
Gray_img(1:row,1:col)=0;
Sum_rgb=R+G+B;
%%%% 各种颜色的默认比率
Color_Ratio(1:6)=0;
Color_Ratio(1)=0.4;     %%%% Red
Color_Ratio(2)=0.6;     %%%% Yellow
Color_Ratio(3)=0.4;     %%%% Green
Color_Ratio(4)=0.6;     %%%% Cyan
Color_Ratio(5)=0.2;     %%%% Blue
Color_Ratio(6)=0.8;     %%%% Magenta
for i=1:row
    for j=1:col
        r=R(i,j);
        g=G(i,j);
        b=B(i,j);
        Max_value=max(r,max(g,b));
        Min_value=min(r,min(g,b));
        Mid_value=Sum_rgb(i,j)-Max_value-Min_value;
        if(Min_value==r)
            Index=0;
        elseif(Min_value==g)
            Index=2;
        else
            Index=4;
        end
        ratio_max_mid=Color_Ratio(mod(Index+3,6)+1);
        if(Max_value==r)
            Index=1;
        elseif(Max_value==g)
            Index=3;
        else
            Index=5;
        end
        ratio_max=Color_Ratio(Index);
        Temp=(Max_value-Mid_value)*ratio_max+(Mid_value-Min_value)...
                      *ratio_max_mid+Min_value;
        Gray_img(i,j)=(Max_value-Mid_value)*ratio_max+(Mid_value-Min_value)...
                      *ratio_max_mid+Min_value;
    end
end

imshow(Image/255);
figure, imshow(Gray_img/255);

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值