搜索
首页web前端PS教程Photoshop图像亮度/对比度调整

Photoshop图像亮度/对比度调整

Feb 18, 2017 pm 01:55 PM
photoshop

    简单介绍一下Photoshop图像亮度/对比度调整的原理:

    一、对比度算法公式。

    Photoshop对于对比度增量,是按给定值的正负分别处理的。

    如果用newRGB表示图像像素新的R、G、B分量,RGB表示图像像素R、G、B分量,Threshold为给定的阀值,Contrast为对比度增量,当Contrast大于0时:

         1) newRGB = RGB + (RGB - Threshold) * (1 / (1 - Contrast / 255) - 1)

    其中,当Contrast等于255时(RGB - Threshold) * (1 / (1 - Contrast / 255) - 1)为无限(±),由于RGB最大最小值分别为255和0,因此,只能按Threshold来确定newRGB,即newRGB = RGB >= Threshold? 255 : 0,这实际就是设置图像阀值,图像由最多八种颜色组成,即红、黄、绿、青、蓝、紫及黑与白,在灰度图上也只有最多8条线。

    当Contrast小于0时:

        2) newRGB = RGB + (RGB - Threshold) * Contrast / 255

    其中,当Contrast等于-255时,图像RGB各分量都等于阀值,图像呈全灰色,灰度图上只有1条线,即阀值灰度。

    二、图像亮度调整。本文采用的是最常用的非线性亮度调整(Phoposhop CS3以下版本也是这种亮度调整方式,CS3及以上版本也保留了该亮度调整方式的选项)。

    三、图像亮度/对比度综合调整算法。这个很简单,当亮度、对比度同时调整时,如果对比度大于0,现调整亮度,再调整对比度;当对比度小于0时,则相反,先调整对比度,再调整亮度。

    下面是用BCB2007和GDI+位图数据写的Photoshop图像亮度/对比度调整全部代码,包括例子代码:

//---------------------------------------------------------------------------

// 定义ARGB像素结构
typedef union
{
    ARGB Color;
    struct
    {
        BYTE Blue;
        BYTE Green;
        BYTE Red;
        BYTE Alpha;
    };
}ARGBQuad, *PARGBQuad;
//---------------------------------------------------------------------------

 


//---------------------------------------------------------------------------

FORCEINLINE
INT CheckValue(INT value)
{
    return value <= 0? 0 : value >= 255255 : value;
}
//---------------------------------------------------------------------------

VOID BrightAndContrast(BitmapData *data, INT bright, INT contrast, BYTE threshold)
{
    FLOAT cv = contrast <= -255? -1.0f : contrast / 255.0f;
if (contrast > 0 && contrast < 255)
cv = 1.0f / (1.0f - cv) - 1.0f;

BYTE values[256];
for (INT i = 0; i < 256; i ++)
{
INT v = contrast > 0? CheckValue(i + bright) : i;
        if (contrast >= 255)
            v = v >= threshold? 255 : 0;
        else
            v = CheckValue(v + (INT)((v - threshold) * cv + 0.5f));
        values[i] = contrast < 0? CheckValue(v + bright) : v;
}

PARGBQuad p = (PARGBQuad)data->Scan0;
    INT offset = data->Stride - data->Width * sizeof(ARGBQuad);

    for (UINT y = 0; y < data->Height; y ++, (BYTE*)p += offset)
    {
        for (UINT x = 0; x < data->Width; x ++, p ++)
        {
            p->Blue        = values[p->Blue];
            p->Green    = values[p->Green];
            p->Red        = values[p->Red];
        }
    }
}
//---------------------------------------------------------------------------

// 锁定GDI+位位图扫描线到data
FORCEINLINE
VOID LockBitmap(Gdiplus::Bitmap *bmp, BitmapData *data)
{
    Gdiplus::Rect r(00, bmp->GetWidth(), bmp->GetHeight());
    bmp->LockBits(&r, ImageLockModeRead | ImageLockModeWrite,
        PixelFormat32bppARGB, data);
}
//---------------------------------------------------------------------------

// GDI+位图扫描线解锁
FORCEINLINE
VOID UnlockBitmap(Gdiplus::Bitmap *bmp, BitmapData *data)
{
    bmp->UnlockBits(data);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)
{
    Gdiplus::Bitmap *bmp =  new Gdiplus::Bitmap(L"d:\\source.jpg");
    Gdiplus::Graphics *g = new Gdiplus::Graphics(Canvas->Handle);
    g->DrawImage(bmp, 00);

    BitmapData data;
    LockBitmap(bmp, &data);
    BrightAndContrast(&data, 0100121);
    UnlockBitmap(bmp, &data);
    g->DrawImage(bmp, data.Width, 0);

    delete g;
    delete bmp;
}
//---------------------------------------------------------------------------

    在亮度/对比度调整函数BrightAndContrast中,首先按前面介绍的原理制造了一个256个元素大小的查找表,然后对图像数据逐像素按R、G、B分量值在查找表中取得调整后的数据,因此处理速度相当快。

Photoshop图像亮度/对比度调整



更多Photoshop图像亮度/对比度调整 相关文章请关注PHP中文网!


声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
高级Photoshop教程:大师修饰和合成高级Photoshop教程:大师修饰和合成Apr 17, 2025 am 12:10 AM

Photoshop的高级修图与合成技术包括:1.使用图层、蒙版和调整层进行基础操作;2.通过调整图像像素值实现修图效果;3.利用多图层和蒙版进行复杂合成;4.应用“液化”工具调整面部特征;5.使用“频率分离”技术进行细腻修图,这些技术能提升图像处理水平并实现专业级效果。

使用Photoshop进行图形设计:品牌和更多使用Photoshop进行图形设计:品牌和更多Apr 16, 2025 am 12:02 AM

使用Photoshop进行品牌设计的步骤包括:1.使用钢笔工具绘制基本形状,2.通过图层样式添加阴影和高光,3.调整颜色和细节,4.使用智能对象和动作自动生成不同版本的设计。Photoshop通过图层和蒙版的灵活性,帮助设计师创建和优化品牌元素,从简单的标志到复杂的品牌指南,确保设计的一致性和专业性。

Photoshop的订阅模型:您的钱是什么Photoshop的订阅模型:您的钱是什么Apr 15, 2025 am 12:17 AM

Photoshop的订阅模式值得购买。1)用户可以随时访问最新版本和跨设备使用。2)订阅费用低,提供持续更新和技术支持。3)高级功能如神经滤镜可用于复杂图像处理。尽管长期成本较高,但其便利性和功能更新对专业用户很有价值。

Photoshop:调查免费试用和折扣选项Photoshop:调查免费试用和折扣选项Apr 14, 2025 am 12:06 AM

你可以通过以下方式以最经济的方式获得Photoshop的使用权:1.利用7天的免费试用期体验软件功能;2.寻找学生或教师折扣,以及季节性促销;3.使用第三方网站上的优惠券;4.订阅AdobeCreativeCloud的月度或年度计划。

设计师的Photoshop:创建视觉概念设计师的Photoshop:创建视觉概念Apr 13, 2025 am 12:09 AM

在Photoshop中创建视觉概念可以通过以下步骤实现:1.创建新文档,2.添加背景层,3.使用画笔工具绘制基本形状,4.调整颜色和亮度,5.添加文本和图形,6.使用蒙版进行局部编辑,7.应用滤镜效果,这些步骤帮助设计师从零开始构建完整的视觉作品。

Photoshop免费吗?了解订阅计划Photoshop免费吗?了解订阅计划Apr 12, 2025 am 12:11 AM

Photoshop不是免费的,但有几种方式可以低成本或免费使用:1.免费试用期为7天,期间可体验所有功能;2.学生和教师优惠可将成本减半,需提供学校证明;3.CreativeCloud套餐适合专业用户,包含多种Adobe工具;4.PhotoshopElements和Lightroom为低成本替代方案,功能较少但价格更低。

Photoshop的价值:权衡成本与其功能Photoshop的价值:权衡成本与其功能Apr 11, 2025 am 12:02 AM

Photoshop值得投资,因为它提供了强大的功能和广泛的应用场景。1)核心功能包括图像编辑、图层管理、特效制作和色彩调整。2)适合专业设计师和摄影师,但业余爱好者可考虑替代品如GIMP。3)订阅AdobeCreativeCloud可按需使用,避免一次性高额支出。

Photoshop的核心目的:创意图像设计Photoshop的核心目的:创意图像设计Apr 10, 2025 am 09:29 AM

Photoshop在创意图像设计中的核心用途是其强大的功能和灵活性。1)它允许设计师通过图层、蒙版和滤镜将创意转化为视觉现实。2)基本用法包括裁剪、调整大小和颜色校正。3)高级用法如图层样式、混合模式和智能对象可创建复杂效果。4)常见错误包括图层管理不当和滤镜使用过度,可通过整理图层和合理使用滤镜解决。5)性能优化和最佳实践包括合理使用图层、定期保存文件和使用快捷键。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
1 个月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它们
1 个月前By尊渡假赌尊渡假赌尊渡假赌

热工具

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境