请教:如何显示灰度图象
我有一个512*512的的数据矩阵,每个元素是10位的数据,但用的2byte存储的
想用vb显示出来,可发现vb里好象都是显示rgb颜色的,没有专门显示灰度图的.
而且我的数据都比较集中,数值都在130左右.希望能在显示的时候颜色范围控制的小一点,可以使对比度高点.
希望给我大虾不吝赐教
[解决办法]
把图像变成灰度:
1。读取位图像素的rgb值,
2。用读取的retval=(r+g+b)/3重新写回图像rgb(retval,retval,retval)
[解决办法]
楼上正解,以下给出代码,其转换过程较长:
Private Sub CmdGray_Click()
'转换为灰度图像
Dim red As Integer
Dim green As Integer
Dim blue As Integer
Dim c As Long
Dim graycolor As Long
Dim x0 As Integer
Dim y0 As Integer
For x0 = 0 To Picture1.Width
For y0 = 0 To Picture1.Height
c = Picture1.Point(x0, y0)
red = (c And &HFF)
green = (c And 62580) / 256
blue = (c And &HFF00) / 65536
graycolor = (red + green + blue) / 3
Picture2.PSet (x0, y0), RGB(graycolor, graycolor, graycolor)
DoEvents
Next
Next
End Sub
Private Sub CmdOpen_Click()
'打开文件并显示在Picture1中
On Error GoTo Err_handle
CmnDlg1.DialogTitle = "打开 "
CmnDlg1.ShowOpen
Picture1.Picture = LoadPicture(CmnDlg1.FileName)
Picture2.Width = Picture1.Width
Picture2.Height = Picture1.Height
Exit Sub
Err_handle: Exit Sub
End Sub
Private Sub CmdSave_Click()
'保存转换后的图像
On Error GoTo Err_handle
CmnDlg1.DialogTitle = "保存 "
CmnDlg1.Filter = ( "位图文件(*.bmp)|*.bmp ")
CmnDlg1.ShowSave
SavePicture Picture2.Image, CmnDlg1.FileName
Err_handle: MsgBox Err.Description, vbOKOnly
Exit Sub
End Sub
[解决办法]
10位?你最到要用到1024去?
我记得灰度的8bit就应该可以了吧,1个byte就可以保存了啊
RGB是LONG 4Byte的,你把你的灰度值得出来,用RGB(GrayValue, GrayValue, GrayValue)获得对应的灰色,显示出来就OK了
如果集中在130左右,可能看起来是一片灰色,如果有需要,可以酌情在GrayValue上增加一个量拉大色差.