图象处理: 提高对比度 - 2

本程序示例是对提高对比度1的扩展,介绍的是如何通过编程控制调节对比度的参数。
语言:Visual Basic 6
版本:3.0.3
发布于:2006年8月20日
作者:IC Imaging Control 技术支持部
系统要求:IC Imaging Control >2.1
由WDM数据流类驱动程序驱动的相机、视频转换器或图像采集卡

本节将演示如何直接在你的程序里调节对比度的参数,而非通过一个内置滤镜对话框。

示例程序窗口如图所示:

The Testdialog of IC Imaging Control,

这个滤镜将对图像实施柱状图扩展操作,即处于最大和最小值之间的灰度值将被按比例映射为0~255之间的值, 小于最小值的像素灰度值将被设为0,大于最大值的会制度将被设为255。而最大值和最小值可通过两个 scrollbars (sldLowerBound and sldUpperBound)进行调节。程序开始时首先调用两个函数进行初始化。

InitControls
UpdateControls

函数 InitControls 将初始化scrollbars的最小值与最大值。

Private Sub InitControls()
    sldLowerBound.Min = 0
    sldLowerBound.Max = 255
    sldUpperBound.Min = 0
    sldUpperBound.Max = 255
End Sub

函数 UpdateControls 将滤镜参数 "Enable"、"Lower Bound" 及 "Upper Bound" 赋值给复选框 cbEnable 和 scrollbars sldLowerBound sldUpperBound

Private Sub UpdateControls()
    If filter.Parameter("Enable") Then
        cbEnable.Value = Checked
    Else
        cbEnable.Value = Unchecked
    End If
    sldLowerBound.Value = filter.Parameter("Lower Bound")
    txLowerBound.Text = sldLowerBound.Value
    sldUpperBound.Value = filter.Parameter("Upper Bound")
    txUpperBound.Text = sldUpperBound.Value
End Sub

scrollbar sldLowerBound 的事件处理程序将确保它的值小于等于 scrollbar sldUpperBound 的值。之后,scrollbar 的值将被赋予滤镜参数 "Lower Bound",同时scrollbar 右侧的显示文字将被更新。scrollbar sldUpperBound 的事件处理程序的原理也类似。

Private Sub sldLowerBound_Scroll()
    If sldLowerBound.Value >= sldUpperBound.Value Then
        sldLowerBound.Value = sldUpperBound.Value - 1
    End If
    filter.Parameter("Lower Bound") = sldLowerBound.Value
    txLowerBound.Text = sldLowerBound.Value
End Sub

相关源代码示例

责任声明
IC Imaging Control 源代码库中的所有代码均只用于教学目的,The Imaging Source Europe GmbH 作为IC Imaging Control的开发制造商,不对任何由于使用本文或其中源代码所产生的后果承担责任。

该网站为The Imaging Source网络的一部分。其它的站点包括 公司, Imaging, 天文相机, Astronomy Cameras Blog, Blog caméras d'astronomie, 天文相机有奖竞答, TX Text Control, LiveDocx, phpLiveDocxForum.