光照效果

本文介绍了一种用于增强图像高光效果的算法实现细节。该算法能够有效提亮图像中的较暗区域,并通过调整色彩比例来改善整体视觉效果,同时去除背景杂点。作者郑斯彬分享了具体的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  原图(第一张)             第二张:第一次执行                   第三张:继续一次执行                 第四张:继续一次执行                                                                                                            






  private void 光照效果函数()
        {    //图像高光部分会被照亮,形成高光效果。
            //由于是等比例分配,几乎不会改变色相值,缺点是色比例为0时不调。全彩时色比例是0
            //'较暗的地方也会亮起来,背景杂点色彩(一般指比字体淡的)通过一次遍历也可以直接消除。
            //作者:郑斯彬
              bitmapOp = objImage.getPeekImage(); 
            if (bitmapOp == null) { MessageBox.Show("请打开要操作的图片!", "错误"); return; }
            SetBitmap BMPClass = new SetBitmap(bitmapOp);
            BMPClass.LockBits();
            int bmpWidth = bitmapOp.Width, bmpHeight = bitmapOp.Height;
            rgbClass rgb = new rgbClass();
            //二维图像数组循环  
            for (int i = 0; i < bmpWidth; i++)
                for (int j = 0; j < bmpHeight; j++)
                {
                    //读取当前像素的RGB颜色值      
                    curColor = BMPClass.GetPixel(i, j); //使用类数组方式查询结果,直接指针内存操作。减少系统.GetPixel的使用频率
                    rgb.SetRGB(curColor); rgb.GetBigMY(18);  //做个简单的排序
                    if (rgb.D > 0)
                    { 
                        double add = (255 - rgb.SN + 128 * rgb.SB) / 6.0;  //强调SN浓度低的地方,除以6是不想调整幅度太大                     
                        double BBH = (add * rgb.XLD) / 255.0;       //计算黑白色的程度, double BBH = (add * rgb.X) / 255.0; 
                        int 小 = (int)(rgb.X + BBH);              //计算最小值
                        int 中 = (int)(rgb.Z + BBH + BBH * rgb.ZH / rgb.D);
                        int 大 = (int)(rgb.D + BBH + (BBH * rgb.SN) / rgb.D); 
                        BMPClass.FixRGB(ref 小, ref 中, ref 大);
                        rgb.X = (byte)小;
                        rgb.Z = (byte)中;
                        rgb.D = (byte)大;
                        BMPClass.SetPixel(i, j, rgb.Color); // Color.FromArgb(rgb.red, rgb.green, rgb.blue)
                    }
                } //for
            //从内存解锁Bitmap
            BMPClass.UnlockBits();  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值