利用影象二維熵實現視訊訊號丟失檢測(Signal Loss Detection)

2022-08-08 12:04:26

1 影象二維熵

  • 影象二維熵作為一種特徵評價尺度能夠反映出整個影象所含平均資訊量的高低,熵值(H)越大則代表影象所包含的資訊越多,反之熵值(H)越小,則影象包含的資訊越少。對於影象資訊量,可以簡單地認為影象的邊緣資訊越多則影象的資訊量越大。二維熵公式如下所示:

2 訊號丟失檢測

2.1 畫面對比

  • 由於訊號丟失所產生的畫面大部分均由簡單的純色或少色的人造影象,再加上「訊號丟失」提示資訊所構成,因此訊號丟失畫面的資訊量與正常影象相比較低,因此其對應的二維熵值更小。例如:

    上圖所示的訊號丟失畫面由黑色螢幕加上訊號丟失提示組成,畫面簡單,資訊量較低

  • 而正常畫面具有更多的邊緣資訊

    相較於訊號丟失畫面,正常影象具有更高的資訊量,其對應的二維熵值更大

2.2 基於影象二維熵的影象訊號丟失檢測C++實現(使用OpenCV)

  • Step1:將輸入的BGR影象轉換為GRAY灰度影象。
    Step2:計算影象中每個畫素點對應地K(本文取K=8)鄰域畫素均值。
    Step3:統計各(畫素值,K鄰域畫素均值)二元組出現概率。
    Step4:計算影象二維熵H。
    Step5:將H與預設閾值Threshold進行比較,判斷影象是否存在訊號丟失異常。
bool SignalLossDetection::SignalEntropyLossException(cv::Mat& inputImg, double threshold)
{
	//convert the input BGR image to GRAY iamge
	cv::cvtColor(inputImg, inputImg, cv::COLOR_BGR2GRAY);
	inputImg.convertTo(inputImg, CV_64F);
	cv::Mat imgEntropyMap= cv::Mat::zeros(256, 256, CV_64F);// 256 * 256 entropy map
	//calculate the mean value of K=8 neighborhood
	cv::Mat meanKernal(3, 3, CV_16S);
	short mean[]{ 1,1,1,
		      1,0,1,
		      1,1,1 };
	meanKernal.data = (unsigned char*)mean;
	cv::Mat meanMap;
	cv::filter2D(inputImg, meanMap, -1, meanKernal, cv::Point(-1, -1), 0.0, cv::BORDER_REFLECT_101);
	meanMap /= 8;

	//calculate the (intensity, mean intensity of the K=8 neighborhood) two-tuples of the image
	inputImg.convertTo(inputImg, CV_8UC1);
	meanMap.convertTo(meanMap, CV_8UC1);
	for(int i{0};i<meanMap.rows;++i)
		for (int j{ 0 }; j < meanMap.cols; ++j) {
			imgEntropyMap.at<double>(inputImg.at<uchar>(i, j), meanMap.at<uchar>(i, j))+=1;
		}

	//calculate the two dimensional entropy of the image
	imgEntropyMap /= (inputImg.rows * inputImg.cols);
	cv::Mat logMap;
	cv::log(imgEntropyMap + 1e-7, logMap);//add delta=1e-7 to avoid overflow
	if (-cv::sum(imgEntropyMap)[0] <= threshold)//determine whether the image have the signal loss exception
		return true;
	else
		return false;
}

2.3 訊號丟失檢測結果分析

通過對影象計算二維熵值,並設定合理閾值(Threshold)便能達到訊號丟失畫面檢測的目的。檢測結果如下:

  • 一張正常影象的二維熵值通常較高,如下圖所示H=6.6348,說明影象中存在較多的邊緣資訊,不存在訊號丟失現象。

  • 作為最為常見的訊號丟失情況,純色背景的訊號丟失影象的二維熵值極小,如下圖所示H=0.3419,表明畫面存在訊號丟失異常。

  • 彩色背景的訊號丟失影象使用頻率雖然不如純色背景高,但也有大量的應用場景,通過計算它的二維熵值,發現其二維熵值雖然較純色訊號丟失影象更大,但依舊不高,如下圖所示H=3.3039,依然可以判斷影象存在訊號丟失異常。