利用圖像二維熵實現視頻信號丟失檢測(Signal Loss Detection)

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,依然可以判斷圖像存在信號丟失異常。