이예제에서는l * a * b *컬러스페이스를분석분석직물직물에서서로다른을식별하는방법을보여보여직물영상은图像采集工具箱™를사용하여하여수집。
형형형형색색의직물직물을한한fabric.png.
를읽어들입니다。fabric.png.
를사용하는하는,图像采集工具箱에서다음함수들을사용하여영상을수집수집수수
%访问连接到Pulnix TMC-9700相机的Matrox(R)帧抓取器,以及%使用NTSC格式获取数据。%Vidobj = VideoInput('matrox',1,'m_ntsc_rgb');%打开实时预览窗口。点相机到一块五颜六色的面料上。%预览(Vidobj);%捕获一个数据帧。%fabric = getsnapshot(Vidobj);%IMWrite(Fabric,'fabric.png','png');%删除和清除相关变量。%删除(Vidobj)%clear vidobj;Fabric = imread('fabric.png');imshow(结构)标题('织物')
영상에서6가지주요주요색,배경색,빨간색,녹색,자주색,노란색,자홍색을볼있습니다。이러한색색을눈으로얼마나쉽게구별할수있는지있는지l * a * b *컬러스페이스(cielab또는cie l * a * b *라고라고함)를사용하면이러한시각적적이를수량화할수있습니다。
l * a * b *컬러스페이스는cie xyz 3자극값에서됩니다。l * a * b *컬러스페이스컬러스페는광도층광도층'l *'(밝기층에해당함)과색도층'a *'(빨간색 - 녹색축에놓인색의위치나타냄)와색도층'b *'(파란색- 노란색노란색축에놓인놓인색의를나타냄나타냄를나타냄됩니다구성구성구성구성구성구성구성구성
각각색에대해대해작은샘플을선택선택하고각샘플영역평균색색을을을을을을색을컬러스페컬러스페컬러스페스계산계산계산하는을을을합니다이러한색색마커는각각픽셀을분류데사용됩니다。
이예제에서는간단히垫파일에저장된영역좌표를불러옵니다。
加载RegionCoordInates.;ncolors = 6;sample_regions = false([尺寸(结构,1)大小(结构,2)ncolors]);为了count = 1:ncolors sample_regions(::count)= roIpoly(结构,region_coordinates(:,1,count),......region_coordinates(:,2,count));结尾imshow(sample_regions(:,:,2))标题('红色的样本区域')
RGB2LAB.
를사용하여하여rgb영상을l * a * b * b *영상으로변환합니다。
Lab_Fabric = RGB2LAB(结构);
罗赞
를사용하여추출한한영역의평균'a *'및'b *'값을계산합니다。이러한러한값'A * B *'컬러스페이스에서에서색사용용。
a = lab_fabric(:,:,2);b = lab_fabric(:,:3);color_markers = zeros([ncolors,2]);为了count = 1:ncolors color_markers(count,1)=均值2(a(sample_regions(:,:,count)));color_markers(count,2)=均值2(b(sample_regions(:,:,count)));结尾
예를들어,'a * b *'컬러스페이스에서에서빨간색샘플영역의평균색은다음과
fprintf('[%0.3f,%0.3f] \ n',color_markers(2,1),color_markers(2,2));
[69.828,20.106]
이제각각색마커는마커는a'값과'B *'값을갖습니다。해당픽셀과각색마커사이의유클리드거리를계산하여lab_fabric.
영상의각픽셀을분류할수있습니다。픽셀가가장작다는것은이해당색마커와거의일치한다는것의미합니다합니다의미의미합니다합니다。예를들어,픽셀과픽셀과마커간의가가장작은경우이픽셀은픽셀은픽셀로레이블이지정지정。
색색이블(즉,0 =배경색,1 =빨간색,2 =녹색,3 =자주색,4 =자홍색,5 =노란색)을포함하는배열을만듭니다。
color_labels = 0:ncolors-1;
최근접이웃분류에사용에위해행렬을초기화합니다。
a = double(a);b =双(b);距离=零([尺寸(a),ncolors]);
분류를수행합니다。
为了count = 1:ncolors距离(:,:count)=((a - color_markers(count,1))。^ 2 +......(b - color_markers(count,2))。^ 2)。^ 0.5;结尾[〜,标签] = min(距离,[],3);label = color_labels(标签);清除距离;
이블행렬에는직물영상각에에이블이블되어있습니다。아이블행렬을사용하여하여원래직물영상에있는객체색으로분리합니다객체를색으로분리
rgb_label = repmat(标签,[1 1 3]);segmented_images = zeros([大小(结构),ncolors],'uint8');为了count = 1:ncolors颜色=结构;颜色(rgb_label〜= color_labels(count))= 0;segmented_images(:,::,count)=颜色;结尾
5개의분할된색몽타주몽타주로로합니다。영상영상에서색으로으로분류되지배경픽셀도표시표시않은배경픽셀도표시
montage({segmented_images(:,:,:,2),segmented_images(::,:,3)......segmented_images(::,:,:4),segmented_images(::,:,5)......segmented_images(:,::,6),segmented_images(:,:,:,1)});标题(“蒙太奇的红色,绿色,紫色,洋红色和黄色物体和背景”)
별도별도의의의의의과과접웃분류접접접분류분류수을픽셀웃분류플로팅과픽셀픽셀의의과의의의의의의의의의의의된픽셀픽셀의의의의픽셀픽셀픽셀픽셀의픽셀픽셀픽셀픽셀픽셀픽셀픽셀픽셀픽셀픽셀표시표시으로점점색레에에사용하여점에레이블을레합니다。
紫色= [119/255 73/255 152/255];plot_labels = {'K'那'r'那'G', 紫色的,'M'那'是'};数字为了count = 1:ncolors图(a(标签== count-1),b(标签== count-1),'。'那'markeredgecolor'那......plot_labels {count},'markerfacecolor',plot_labels {count});抓住上;结尾标题(''a * b *'''空间'中分段像素的散点图);Xlabel(''''''''值');ylabel('''b *''值');