以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [分享]图片去除灰底、锐化、柔化、图片无损压缩、任意位置添加水印等等  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=101287)

--  作者:黄训良
--  发布时间: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
--  发布时间:2017/5/27 17:08:00
--  
看看,如果在图片上,显示另一个图片,做水印,可以做?
[此贴子已经被作者于2017/5/27 17:09:28编辑过]

--  作者:黄训良
--  发布时间:2017/5/27 17:30:00
--  
可以,这是AForge.Net的小功能!
下图是我的水印设置窗口:

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

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

--  作者:有点蓝
--  发布时间:2017/5/27 18:14:00
--  
谢谢分享
--  作者:kylin
--  发布时间:2017/5/27 18:17:00
--  
谢谢楼主!
--  作者:kylin
--  发布时间:2017/5/27 18:45:00
--  
类库文件能上传?
--  作者:binabc2004
--  发布时间:2017/5/27 19:01:00
--  
利害
--  作者:yinyb36
--  发布时间:2017/5/27 19:43:00
--  
图片点击可在新窗口打开查看
--  作者:wei0769
--  发布时间:2017/5/27 21:01:00
--  
高手
--  作者:ap9709130
--  发布时间:2017/5/27 22:44:00
--  
高手,学习!