顏色分割(待)

整理一些顏色分割方法。

實驗圖片

其中紅色部分比較突出,嘗試將其分割出來。

1、經驗閾值提取

    RGB轉到HSV空間,通過統計的經驗閾值設定紅色範圍,結果如下:

                                         圖1

代碼:

#include "cv.h"
#include "highgui.h"
int main()
{
	IplImage *img;
	img=cvLoadImage("e:\\test.bmp",1);
        IplImage *hsv;
	hsv=cvCreateImage(cvGetSize(img),8,3);
	cvCvtColor(img,hsv,CV_BGR2HSV);
	IplImage *RBin;
	RBin=cvCreateImage(cvGetSize(img),8,1);

	CvScalar t;
	for(int i=0;i<img->height;i++)
	{
		for(int j=0;j<img->width;j++)
		{
		   t=cvGet2D(hsv,i,j);
		    //經驗閾值範圍
		 	if ((((t.val[0]>=0)&&(t.val[0]<=10))||((t.val[0]>=312)&&(t.val[0]<=360)))&&((t.val[1]>=43)&&(t.val[1]<=255)))
			{
			  cvSetReal2D(RBin,i,j,1); // 紅色通道

			}
		
		}

	}
	cvNamedWindow("RBin",1);
	cvShowImage("RBin",RBin);
	cvSaveImage("RBin.bmp",RBin);
	cvReleaseImage(&hsv);
	cvReleaseImage(&RBin);
	cvWaitKey(0);

}

這個效果還是可以接受的,但是通用性如何?


當顏色比較暗,即光線不夠理想的時候,效果很差。


2、利用複雜些的方法

參看彩色圖像分割綜述資料,大體分四類:

一:基於鄰域的方法。

1、區域生長和區域分裂的方法。


 



發佈了19 篇原創文章 · 獲贊 3 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章