Foxtable(狐表)用户栏目专家坐堂 → [分享]图片去除灰底、锐化、柔化、图片无损压缩、任意位置添加水印等等


  共有62592人关注过本帖树形打印复制链接

主题:[分享]图片去除灰底、锐化、柔化、图片无损压缩、任意位置添加水印等等

帅哥哟,离线,有人找我吗?
黄训良
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1100 积分:8985 威望:0 精华:0 注册:2014/3/15 14:36:00
[分享]图片去除灰底、锐化、柔化、图片无损压缩、任意位置添加水印等等  发帖心情 Post By:2017/5/27 16:57:00 [只看该作者]

最近需要对图片文件进行电子化,各个单位的高拍仪像素参差不齐,灰底图片、不清晰图片太多,为了提高电子化后图像的清晰度,采用了开源AForge.Net库来处理图像。
一是AForge.Net代码简单,核心代码只需要2、3行。
二是效率高,以Laplacian(拉普拉斯)算子对图片进行锐化处理为例,3M图片,下面的VB.Net代码锐化结束需要10秒以上,AForge.Net只需要0.6秒。
        备注:一楼附件是去灰底代码Plus版。Plus版效果见16楼。
      附件中新增了图像的3种锐化效果、图像对比度、亮度、饱和度调整代码。
三、关于AForge类库下载:
   红色框中任意选择一个下载:
   Download Installer  控件库安装包
   Download Full ZIP Archive  完整的ZIP文档
   Download Libraries Only  仅仅下载类库
   Release Notes  发行说明

图片点击可在新窗口打开查看此主题相关图片如下:aforgedown.jpg
图片点击可在新窗口打开查看

对比代码:
     在Foxtable中新建一个窗口,添加一个按钮、一个图片框
     按钮写入 VB.Net Laplacian(拉普拉斯)算子图片锐化代码如下:   
        Dim ImagePath As String
        Dim dlg As OpenFileDialog = Me.OpenFileDialog1
        If dlg.ShowDialog = Windows.Forms.DialogResult.OK Then
            ImagePath = dlg.FileName
        Else
            Return
        End If
        Dim tempImage As Image = Image.FromFile(ImagePath)
        Dim Height As Integer
        Height = tempImage.Height
        Dim width As Integer
        width = tempImage.Width
        NewBitmap = New Bitmap(width, Height)
        Dim OldBitmap As Bitmap = New Bitmap(ImagePath)
        
        Dim t As Date = Date.Now
        Try

            '在使用本函数对彩色图像进行锐化处理时,应该选择{0,-1,0,-1,5,-1,0,-1,0}作为模板,所用模板能在最大限度保证彩色图像不失真的前提下,使图像轮廓线更清晰。
            Dim pixel As Color
            'Dim Laplacian() As Integer = {0, -1, 0, -1, 5, -1, 0, -1, 0}
            Dim Laplacian() As Integer = {-1, -1, -1, -1, 9, -1, -1, -1, -1}
            
            For x As Integer = 1 To width - 2
                For y As Integer = 1 To Height - 2
                    Me.ProgressBar1.Value = x + y
                    Dim r As Integer = 0
                    Dim g As Integer = 0
                    Dim b As Integer = 0
                    Dim index As Integer = 0
                    For col As Integer = -1 To 1   '用Laplacian(拉普拉斯)算子计算当前坐标处像素的上、下、左、右及四角共8处(英文:8 neighbor)的像素值
                        For row As Integer = -1 To 1
                            pixel = OldBitmap.GetPixel(x + row, y + col)
                            r = r + pixel.R * Laplacian(index)
                            g = g + pixel.G * Laplacian(index)
                            b = b + pixel.B * Laplacian(index)
                            index = index + 1
                        Next
                    Next
                    '防止像素值溢出
                    If r > 255 Then r = 255
                    If r < 0 Then r = 0
                    If g > 255 Then g = 255
                    If g < 0 Then g = 0
                    If b > 255 Then b = 255
                    If b < 0 Then b = 0

                    '将指定坐标处的像素设为指定的颜色
                    NewBitmap.SetPixel(x - 1, y - 1, Color.FromArgb(r, g, b))
                Next
            Next
          Dim pic As WinForm.PictureBox = e.Form.Controls("PictureBox1")
          pic.SizeMode = ImageSizeMode.Zoom
          pic.Image = NewBitmap

        Catch ex As Exception
            MessageBox.Show(ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Error)
        Finally
            MsgBox("耗时: " & (Date.Now - t).TotalSeconds & " 秒")
        End Try

一楼:去灰底效果。附件中更新了图像的3种锐化效果、图像对比度、亮度、饱和度调整代码。
效果如下:
原图片:

图片点击可在新窗口打开查看此主题相关图片如下:img_20170527_163415.jpg
图片点击可在新窗口打开查看



去灰底后的图片:

图片点击可在新窗口打开查看此主题相关图片如下:clearbord.jpg
图片点击可在新窗口打开查看

去灰底代码:

以下内容只有回复后才可以浏览


图片锐化代码:1、AForge默认锐化(实际就是拉普拉斯算子锐化)。2、高斯锐化。3、自定义卷积滤镜锐化
并附上:对图片像素的亮度、对比度、饱和度调整代码。


以下内容只有回复后才可以浏览


[此贴子已经被作者于2017/5/29 22:13:48编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
zhangjian222200
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1553 积分:11003 威望:0 精华:0 注册:2016/9/12 11:18:00
  发帖心情 Post By:2017/5/27 17:08:00 [只看该作者]

看看,如果在图片上,显示另一个图片,做水印,可以做?
[此贴子已经被作者于2017/5/27 17:09:28编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
黄训良
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1100 积分:8985 威望:0 精华:0 注册:2014/3/15 14:36:00
  发帖心情 Post By:2017/5/27 17:30:00 [只看该作者]

可以,这是AForge.Net的小功能!
下图是我的水印设置窗口:

图片点击可在新窗口打开查看此主题相关图片如下:水印.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2017/5/27 17:34:41编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110544 积分:562604 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/5/27 18:14:00 [只看该作者]

谢谢分享

 回到顶部
帅哥哟,离线,有人找我吗?
kylin
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 F6
等级:狐精 帖子:3036 积分:19223 威望:0 精华:2 注册:2008/9/1 7:50:00
  发帖心情 Post By:2017/5/27 18:17:00 [只看该作者]

谢谢楼主!

 回到顶部
帅哥哟,离线,有人找我吗?
kylin
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 F6
等级:狐精 帖子:3036 积分:19223 威望:0 精华:2 注册:2008/9/1 7:50:00
  发帖心情 Post By:2017/5/27 18:45:00 [只看该作者]

类库文件能上传?

 回到顶部
帅哥哟,离线,有人找我吗?
binabc2004
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:200 积分:1592 威望:0 精华:0 注册:2016/4/1 12:21:00
  发帖心情 Post By:2017/5/27 19:01:00 [只看该作者]

利害

 回到顶部
帅哥哟,离线,有人找我吗?
yinyb36
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:953 积分:7252 威望:0 精华:0 注册:2011/9/6 13:36:00
  发帖心情 Post By:2017/5/27 19:43:00 [只看该作者]

图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
wei0769
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1822 积分:19495 威望:0 精华:0 注册:2013/4/10 14:38:00
  发帖心情 Post By:2017/5/27 21:01:00 [只看该作者]

高手

 回到顶部
帅哥哟,离线,有人找我吗?
ap9709130
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1470 积分:11456 威望:0 精华:0 注册:2013/11/24 22:10:00
  发帖心情 Post By:2017/5/27 22:44:00 [只看该作者]

高手,学习!

 回到顶部
总数 116 1 2 3 4 5 6 7 8 9 10 下一页 ..12