我有一张图像,其中红色的强度从左到右增加(类似于光谱)。我可以比较两个不同点的红色强度吗?
对于科学项目,我需要等距离的红色强度值。是否有我可以使用的脚本(例如在Gimp中)或者有人能告诉我如何使用Python或Scilab创建自己的脚本吗?其他工具和语言也很受欢迎,但这两个是我熟悉的。
感谢。如果我的问题不够明确,请评论。我会根据您的意见尝试改进它。
答案 0 :(得分:0)
您的图像是一个矩阵,其中每个条目(像素)由红色,绿色和蓝色分量组成。通常每个R,G,B值都在0到255范围内,但这可能会因图像格式而异。
要比较两个不同点的红色强度,请在这两个位置提取像素的红色分量。您将有两个可以比较的值。
答案 1 :(得分:0)
如果您的光谱是强度,即从最大红色(r = 255)到黑色(r = 0),那么R通道(RGB)的像素值可用于相对计算(比率或差异)
如果光谱是饱和度,即从红色(完全饱和)到灰色(完全去饱和),则可以使用饱和度值作为度量。
如果你给出一个示例图像,它将有所帮助。
答案 2 :(得分:0)
我想让你更容易:我当然不了解GIMP,但我在VB .NET中已经完成了这个,只是下面的一些代码。如果你想获得百分比,那就是数学:正如其他用户告诉你的那样,你会得到三个与红色,绿色和蓝色相对应的值。该值为0到255,因此255表示100%,0表示0%。只需获得一个函数来获得百分比:
Function getPerc(color) 'color can be R, G, B
getPerc = (color * 100) / 255
End Function
你有。获取颜色的代码可以改编自:
Sub btnGo_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnGo.Click
Me.Cursor = Cursors.WaitCursor
Application.DoEvents()
' Load the image
Dim bm1 As Bitmap = Image.FromFile(txtFile1.Text)
' Make a difference image.
Dim wid As Integer = bm1.Width
Dim hgt As Integer = bm1.Height
' Create some variables
Dim red As Byte, blue As Byte, green As Byte
Dim color As color
'Go pixel by pixel
For x As Integer = 0 To wid - 1
For y As Integer = 0 To hgt - 1
color = bm1.GetPixel(x, y)
red = color.R
blue = color.B
green = color.G
'your code here
Next y
Next x
End Sub
(实际上是我从http://www.vb-helper.com/howto_net_image_compare.html改编的)