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

前端之家收集整理的这篇文章主要介绍了vb.net 教程 5-13 图像处理之像素处理 7前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。


浮雕的算法:

下一行的红绿蓝颜色分量减去上一行的红绿蓝颜色分量,再加上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. '浮雕1
  2. Private Sub btnEmboss_Click(sender As Object,e As EventArgs) Handles btnEmboss.Click
  3. Dim pSourceColor1 As Color
  4. Dim pSourceColor2 As Color
  5. Dim pDestColor As Color
  6.  
  7. Dim destImg As New Bitmap(sourceImg.Width,sourceImg.Height)
  8. Dim R,G,B As Integer
  9. Dim R1,G1,B1 As Integer
  10. Dim R2,G2,B2 As Integer
  11.  
  12. For i As Integer = 1 To sourceImg.Width - 1
  13. For j As Integer = 0 To sourceImg.Height - 1
  14. pSourceColor1 = sourceImg.GetPixel(i,j)
  15. R1 = pSourceColor1.R
  16. G1 = pSourceColor1.G
  17. B1 = pSourceColor1.B
  18.  
  19. pSourceColor2 = sourceImg.GetPixel(i - 1,j)
  20. R2 = pSourceColor2.R
  21. G2 = pSourceColor2.G
  22. B2 = pSourceColor2.B
  23.  
  24. R = R1 - R2 + 128
  25. G = G1 - G2 + 128
  26. B = B1 - B2 + 128
  27.  
  28. If R < 0 Then R = 0
  29. If R > 255 Then R = 255
  30. If G < 0 Then G = 0
  31. If G > 255 Then G = 255
  32. If B < 0 Then B = 0
  33. If B > 255 Then B = 255
  34.  
  35. pDestColor = Color.FromArgb(R,B)
  36. destImg.SetPixel(i,j,pDestColor)
  37. Next
  38. Next
  39. picDest.Image = destImg
  40. 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

主要代码如下:

  1. '浮雕2
  2. Private Sub btnEmboss2_Click(sender As Object,e As EventArgs) Handles btnEmboss2.Click
  3. Dim pSourceColor1 As Color
  4. Dim pSourceColor2 As Color
  5. Dim pDestColor As Color
  6.  
  7. Dim destImg As New Bitmap(sourceImg.Width,j)
  8. R2 = pSourceColor2.R
  9. G2 = pSourceColor2.G
  10. B2 = pSourceColor2.B
  11.  
  12. R = Math.Min(Math.Abs(R1 - R2) + 128,255)
  13. G = Math.Min(Math.Abs(G1 - G2) + 128,255)
  14. B = Math.Min(Math.Abs(B1 - B2) + 128,255)
  15.  
  16. pDestColor = Color.FromArgb(R,pDestColor)
  17. Next
  18. Next
  19. picDest.Image = destImg
  20. End Sub
其中Math.Min(A,B)将返回A和B中较小的值。

运行效果如下:

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

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

猜你在找的VB相关文章