Ho scaricato il progetto ma qui a casa non ho la cam per cui nell'elaborazione ho sostituito l'immagine della cam con un file su disco.
Non ti sei accorto che nella sub:

codice:
Public Sub disegno(ByVal frame As Bitmap)
        '-- verifico se è necessario invocare
        If Me.InvokeRequired Then
            '-- se è necessario, chiamo il delegato che rimanda alla stessa sub
            Dim disegnoMD As New disegnoCallback(AddressOf disegno)
            Dim args() As Object = {frame}
            Me.BeginInvoke(disegnoMD, args)
        Else
            '-- quì verrà eseguito il codice dal Thread Corretto
            PBElaborazione.Image = frame
            Label1.Text = "prova"
            frame.Save("C:\full2.jpg", System.Drawing.Imaging.ImageFormat.Jpeg)
            PBElaborazione.Image = Image.FromFile("C:\full2.jpg")
        End If
    End Sub
il Me.InvokeRequired è false anche se teoricamente dovrebbe essere True? Infatti guardando la famosa finestra di gestione dei Thread quando viene richiamata la sub Disegno essa si trova effettivamente in un'altro Thread, ovvero quello di lavoro in cui effettui l'analisi del frame, ma nonostante ciò il Me.InvokeRequired è False per cui non viene chiamato successivamente il delegato. Il problema è quello.

Per risolvere il problema prima di inviare il frame alla Picturebox nella finestra di elaborazione devi tornare nel MainThread quando sei ancora sei ancora nella Finestra principale e poi inviare il frame , ad esempio:

codice:
Private Sub ElaboraFrame()
        Dim frame As Bitmap
        Dim bmap As Image
        'copiamo l'immagine nella clipboard---
        SendMessage(hWnd, WM_CAP_EDIT_COPY, 0, 0)
        'prendiamo l'immagine dalla clipboard
        'bmap = Clipboard.GetImage
        bmap = Image.FromFile("C:\full.jpg")
        frame = New Bitmap(bmap)
        'Label2.Text = frame.GetPixel(1, 1).ToArgb.ToString
        For i As Integer = 0 To frame.Height - 1
            For j As Integer = 0 To frame.Width - 1
                If (frame.GetPixel(j, i).R > 0 And frame.GetPixel(j, i).G > 0 And frame.GetPixel(j, i).B > 0) Then
                    frame.SetPixel(j, i, Color.Red)
                End If
            Next
        Next
'Mia modifica*************************
        disegno(frame)
'Fine mia modifica**********************
    End Sub

    Delegate Sub disegnoCallback(ByVal frame As Bitmap)
    Public Sub disegno(ByVal frame As Bitmap)
        '-- verifico se è necessario invocare
        If Me.InvokeRequired Then
            '-- se è necessario, chiamo il delegato che rimanda alla stessa sub
            Dim disegnoMD As New disegnoCallback(AddressOf disegno)
            Dim args() As Object = {frame}
            Me.BeginInvoke(disegnoMD, args)
        Else
            '-- quì verrà eseguito il codice dal Thread Corretto
            FinestraElaborazione.disegno(frame)
        End If
    End Sub
Così funziona ma ti ripeto il codice fatto così è poco leggibile.
Ti consiglio di riscriverlo meglio utilizzando una classe per l'eleborazione e gli eventi per le notifiche.