加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

vb.net 教程 5-13 图像处理之像素处理 7

发布时间:2020-12-17 07:33:55 所属栏目:百科 来源:网络整理
导读:浮雕的算法: 下一行的红绿蓝颜色分量减去上一行的红绿蓝颜色分量,再加上128 如果小于0,那么等于0,如果大于255,那么等于255 R=R(i-1,j)-R(i,j)+128 G=G(i-1,j)-G(i,j)+128 B=B(i-1,j)-B(i,j)+128 主要代码如下: '浮雕1 Private Sub btnEmboss_Click(sen


浮雕的算法:

下一行的红绿蓝颜色分量减去上一行的红绿蓝颜色分量,再加上128

如果小于0,那么等于0,如果大于255,那么等于255

R=R(i-1,j)-R(i,j)+128

G=G(i-1,j)-G(i,j)+128

B=B(i-1,j)-B(i,j)+128

主要代码如下:

    '浮雕1
    Private Sub btnEmboss_Click(sender As Object,e As EventArgs) Handles btnEmboss.Click
        Dim pSourceColor1 As Color
        Dim pSourceColor2 As Color
        Dim pDestColor As Color

        Dim destImg As New Bitmap(sourceImg.Width,sourceImg.Height)
        Dim R,G,B As Integer
        Dim R1,G1,B1 As Integer
        Dim R2,G2,B2 As Integer

        For i As Integer = 1 To sourceImg.Width - 1
            For j As Integer = 0 To sourceImg.Height - 1
                pSourceColor1 = sourceImg.GetPixel(i,j)
                R1 = pSourceColor1.R
                G1 = pSourceColor1.G
                B1 = pSourceColor1.B

                pSourceColor2 = sourceImg.GetPixel(i - 1,j)
                R2 = pSourceColor2.R
                G2 = pSourceColor2.G
                B2 = pSourceColor2.B

                R = R1 - R2 + 128
                G = G1 - G2 + 128
                B = B1 - B2 + 128

                If R < 0 Then R = 0
                If R > 255 Then R = 255
                If G < 0 Then G = 0
                If G > 255 Then G = 255
                If B < 0 Then B = 0
                If B > 255 Then B = 255

                pDestColor = Color.FromArgb(R,B)
                destImg.SetPixel(i,j,pDestColor)
            Next
        Next
        picDest.Image = destImg
    End Sub

运行效果如下:

我还看到了另外一个算法:

下一行的红绿蓝颜色分量减去上一行的红绿蓝颜色分量的绝对值,再加上128

如果小于0,那么等于0,如果大于255,那么等于255

R=Abs(R(i-1,j))+128

G=Abs(G(i-1,j))+128

B=Abs(B(i-1,j))+128

主要代码如下:

    '浮雕2
    Private Sub btnEmboss2_Click(sender As Object,e As EventArgs) Handles btnEmboss2.Click
        Dim pSourceColor1 As Color
        Dim pSourceColor2 As Color
        Dim pDestColor As Color

        Dim destImg As New Bitmap(sourceImg.Width,j)
                R2 = pSourceColor2.R
                G2 = pSourceColor2.G
                B2 = pSourceColor2.B

                R = Math.Min(Math.Abs(R1 - R2) + 128,255)
                G = Math.Min(Math.Abs(G1 - G2) + 128,255)
                B = Math.Min(Math.Abs(B1 - B2) + 128,255)

                pDestColor = Color.FromArgb(R,pDestColor)
            Next
        Next
        picDest.Image = destImg
    End Sub
其中Math.Min(A,B)将返回A和B中较小的值。

运行效果如下:

由于.net平台下C#和vb.NET很相似,本文也可以为C#爱好者提供参考。

学习更多vb.net知识,请参看 vb.net 教程 目录

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读