已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
放出代码

Public Class MeanShift

    Const HISTOGRAM_LENGTH As Integer = 4096

    Private imgWidth As Integer
    Private imgHeight As Integer

    Private trackWinWidth As Integer
    Private trackWinHeight As Integer
    Private currentX As Integer
    Private currentY As Integer

    Private currentHistogram(HISTOGRAM_LENGTH) As Double
    Private tempHistogram(HISTOGRAM_LENGTH) As Double

    ' ---------------------------------------------------

    Public Sub InitMeanShiftTracker(ByVal firstFrame() As Byte, ByVal frameWidth As Integer, ByVal frameHeight As Integer, _
                ByVal targetPosX As Integer, ByVal targetPosY As Integer, ByVal targetWidth As Integer, ByVal targetHeight As Integer)

        imgWidth = frameWidth
        imgHeight = frameHeight

        currentX = targetPosX
        currentY = targetPosY

        trackWinHeight = targetHeight
        trackWinWidth = targetWidth

    End Sub

    Public Function CalcHistogramSp(ByVal frame() As Byte, ByVal histogram() As Double) As Integer

        Dim pxValue As Integer = 0

        For i As Integer = 0 To HISTOGRAM_LENGTH
            histogram(i) = 0
        Next

        For j As Long = XXXXXXXx(0, currentY - trackWinHeight / 2) To Math.Min(currentY + trackWinHeight / 2, imgHeight - 1)
            For i As Integer = XXXXXXXx(0, currentX - trackWinWidth / 2) To Math.Min(currentX + trackWinWidth / 2, imgWidth - 1)

                Dim r As Integer = frame(j * imgWidth * 3 + i * 3) / 16
                Dim g As Integer = frame(j * imgWidth * 3 + i * 3 + 1) / 16
                Dim b As Integer = frame(j * imgWidth * 3 + i * 3 + 2) / 16

                histogram(Int(256 * r + 16 * g + b)) += 1

                pxValue += 1

            Next
        Next

        For i As Integer = 0 To HISTOGRAM_LENGTH
            histogram(i) /= pxValue
        Next

        Return pxValue

    End Function

    Public Function MeanShiftProcessSp(ByVal frame() As Byte)

        Dim weights(HISTOGRAM_LENGTH) As Double

        Dim newX As Double = 0.0
        Dim newY As Double = 0.0

        For i As Integer = 0 To HISTOGRAM_LENGTH

            If currentHistogram(i) > 0.0 Then
                weights(i) = tempHistogram(i) / currentHistogram(i)

            Else
                weights(i) = 0
            End If

        Next

        Dim sumOfWeights As Double = 0.0

        For j As Long = XXXXXXXx(0, currentY - trackWinHeight / 2) To Math.Min(currentY + trackWinHeight / 2, imgHeight - 1)
            For i As Integer = XXXXXXXx(0, currentX - trackWinWidth / 2) To Math.Min(currentX + trackWinWidth / 2, imgWidth - 1)

                Dim r As Integer = frame(j * imgWidth * 3 + i * 3) / 16
                Dim g As Integer = frame(j * imgWidth * 3 + i * 3 + 1) / 16
                Dim b As Integer = frame(j * imgWidth * 3 + i * 3 + 2) / 16

                Dim ptr As Integer = 256 * r + 16 * g + b

                newX += weights(ptr) * i
                newY += weights(ptr) * j

                sumOfWeights += weights(ptr)

            Next
        Next


        If sumOfWeights <> 0 Then

            currentX = Int(newX / sumOfWeights) + 0.5
            currentY = Int(newY / sumOfWeights) + 0.5

        End If

        Return Nothing
    End Function

    Public Function MeanShiftTrackProcess(ByVal frame() As Byte, ByVal frameNumber As Integer)

        If frameNumber = 0 Then
            XXXXXlcHistogramSp(frame, tempHistogram)
        Else

            Dim stopThreshold As Integer = 10
            Dim counter As Integer = 0

            While counter < stopThreshold
                XXXXXlcHistogramSp(frame, currentHistogram)
                Me.MeanShiftProcessSp(frame)
                counter += 1
            End While

            Me.DrawTrackBox(frame)

        End If

        Return Nothing
    End Function

    Public Sub DrawTrackBox(ByVal frame() As Byte)


        For i As Integer = currentX To Math.Min(imgWidth, currentX + trackWinWidth)

            frame(currentY * imgWidth * 3 + i * 3 + 0) = 0
            frame(currentY * imgWidth * 3 + i * 3 + 1) = 0
            frame(currentY * imgWidth * 3 + i * 3 + 2) = 255

            frame(Math.Min(imgHeight - 1, currentY + trackWinHeight) * imgWidth * 3 + i * 3 + 0) = 0
            frame(Math.Min(imgHeight - 1, currentY + trackWinHeight) * imgWidth * 3 + i * 3 + 1) = 0
            frame(Math.Min(imgHeight - 1, currentY + trackWinHeight) * imgWidth * 3 + i * 3 + 2) = 255
        Next

        For j As Integer = currentY To Math.Min(imgHeight - 1, currentY + trackWinHeight)

            frame(j * imgWidth * 3 + currentX * 3 + 0) = 0
            frame(j * imgWidth * 3 + currentX * 3 + 1) = 0
            frame(j * imgWidth * 3 + currentX * 3 + 2) = 255

            frame(j * imgWidth * 3 + Math.Min(imgWidth - 1, currentX + trackWinWidth) * 3 + 0) = 0
            frame(j * imgWidth * 3 + Math.Min(imgWidth - 1, currentX + trackWinWidth) * 3 + 1) = 0
            frame(j * imgWidth * 3 + Math.Min(imgWidth - 1, currentX + trackWinWidth) * 3 + 2) = 255
        Next
    End Sub

End Class
文号 / 237039

百炼成钢
名片发私信
学术分 1
总主题 44 帖总回复 347 楼拥有证书:学者 笔友
注册于 2006-10-31 13:24最后登录 2018-01-10 01:03
主体类型:个人
所属领域:无
认证方式:邮箱
IP归属地:未同步

个人简介

暂未填写
文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

插入资源
全部
图片
视频
音频
附件
全部
未使用
已使用
正在上传
空空如也~
上传中..{{f.progress}}%
处理中..
上传失败,点击重试
等待中...
{{f.name}}
空空如也~
(视频){{r.oname}}
{{selectedResourcesId.indexOf(r.rid) + 1}}
处理中..
处理失败
插入表情
我的表情
共享表情
Emoji
上传
注意事项
最大尺寸100px,超过会被压缩。为保证效果,建议上传前自行处理。
建议上传自己DIY的表情,严禁上传侵权内容。
点击重试等待上传{{s.progress}}%处理中...已上传,正在处理中
空空如也~
处理中...
处理失败
加载中...
草稿箱
加载中...
此处只插入正文,如果要使用草稿中的其余内容,请点击继续创作。
{{fromNow(d.toc)}}
{{getDraftInfo(d)}}
标题:{{d.t}}
内容:{{d.c}}
继续创作
删除插入插入
插入公式
评论控制
加载中...
文号:{{pid}}
加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}
ID: {{user.uid}}