zoukankan      html  css  js  c++  java
  • PS 图像调整算法——黑白

    这个算法是参考自 阿发伯 的博客:

    http://blog.csdn.net/maozefa

    黑白调整

    Photoshop CS的图像黑白调整功能,是通过对红、黄、绿、青、蓝和洋红等6种颜色的比例调节来完成的。能更精细地将彩色图片转换为高质量的黑白照片。

        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两种分量颜色所形成的复色比率。

    默认的单色及复色比率为:

    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


    Program:

    %%%%%  程序实现图像的黑白调整功能

    clc;
    clear all;
    close all;
    Image=imread('9.jpg');
    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);



    原图:


    黑白 



  • 相关阅读:
    【POJ】1287 Networking
    【POJ】1251 Jungle Roads
    【POJ】1182 食物链
    【POJ】2492 A Bug's Life
    【HDUOJ】1213 How many tables
    【POJ】1611 The Suspects
    【POJ】2236 Wireless Network
    【POJ】2240 Arbitrage
    【POJ】3660 Cow Contest
    【POJ】1502 MPI Maelstrom
  • 原文地址:https://www.cnblogs.com/muyuge/p/6152400.html
Copyright © 2011-2022 走看看