Home > ,  > [Matlab]توپلىما گۇرۇپپىلاپ تەھلىل قىلىش(聚类分析) فونكىسيىسى

[Matlab]توپلىما گۇرۇپپىلاپ تەھلىل قىلىش(聚类分析) فونكىسيىسى

5

ئادەتتە ماتېماتىكىدىكى مۇرەككەپ ھېسابلاشلارنى Matlab دىن ئىبارەت ئىنتايىن كۈچلۈك بولغان دېتال ئارقىلىق ئېلىپ بارغىلى بولىدۇ. نۇرغۇن ماتېماتىكىلىق مودىللارنى دەل موشۇ دېتال ياردىمى بىلەن تېخىمۇ ئۈنۈملۈك ۋە تىز سۈرەتتە بارلىققا كەلتۈرگىلى ۋە تەتقىقاتلارنى ئېلىپ بارغىلى بولىدۇ. ئۇندىن باشقا چوڭ كۆلەملىك ھېسابات، تەھلىل ئىشلىرىدا مەزكۇر دېتالنىڭ ئىشلىتىلىش تېخىمۇ كەڭ. خوش، ئەمدى گېپىمىزگە كەلسەك: يىقىندا ئوقۇۋاتقان دەرىسلىرىمدىن بىرى "ھالەتلەرنى پەرىقلەندۈرۈش" (模式识别) دەرسىسدە ئاساسلىقى نۆۋەتتىكى تەسۋىرلىگۈسىز دەرىجىدە ئارتىپ كەتكەن ئۇچۇر، سېگىناللارنى ماس ماتېماتىكىلىق مودىللار بىلەن ئەقلىي ھالدا توپلىما گۇرۇپپىلارغا بۆلۈپ، يەنى ئىنتايىن كۆپ سانلىق مەلۇماتلارنى مەلۇم ئالاھىدىلىكلەر بويىچە خاس گۇرۇپپىلارغا ئايرىپ، ھالەتلىرىدە ئوخشاشلىق كۆپ بولغان ئاشۇ گۇرۇپپىلار بويىچە تەھىلىل يۈرگۈزۈش ۋە بىر تەرەپ قىلىشتىن ئىبارەت بىر تالاي تېخنىكىلارنى ئۈگىنەتتۇق. مۇئەللىمنىڭ دىيىشچە: Google, Taobao, Baidu دېگەندەك مۇلازىمەت دائىرىسى ئىنتايىن كەڭ بولغان تېخنىكا شىركەتلىرى بۇ خىل تېخنىكىلارنى ئەڭ كۆپ قوللىنىدىكەن. بۇ خىل توپلىما گۇرۇپپىلار بويىچە تەھلىل قىلىش ئىپادىلىرى ئىچىدە بىرقەدەر ئاددىي ۋە ئىشلىتىلىشى كۆپ بولغان K-Means ئۇسسۇلى بويىچە تاپشۇرۇق بېرىلگەن ئىدى. يىرىم كۈن دىگۈدەك ۋاقىت سەرىپ قىلىپ، كىتابتىكى ماتېماتىكىلىق فورمىلارنى فونكىسىيە ھالىتىگە ئايلاندۇرۇپ، ئاران دېگەندە ئەمەلگە ئاشۇردۇم. يەنى، Matlab دېتالى ئارقىلىق فونكىسىيە يېزىپ، سىناق تەرىقىسىدە بىر پارچە رەسىمنىڭ رەڭگىنى RGB قىممىتى بويىچە سانلىق مەلۇماتقا ئايلاندۇرۇپ، ئاندىن ئاشۇ مەلۇماتلار ئىچىدىن پەرىقلىرى بىرقەدەر روشەن بولغان ئۈچ نوقتىنى تاللاپ، باشقا رەڭ نوقتىلىرىنىڭ تاللانغان ئۈچ نوقتا بىلەن بولغان ئارلىقىنى تېپىپ، ئاندىن ئۇلار ئۈچ نوقتىنىڭ قايسىغا يىقىن بولسا شۇ نوقتىنى مەركەز قىلغان گۇرۇپپىغا تەۋەلەپ بېرىپ، رەسىم يۈزىدىكى پۈتكۈل رەڭ قىممەتلىرىنى بەلگىلەنگەن ئۈچ گۇرۇپپىغا بۆلۈپ تەھلىل قىلدىم. ئاقىۋەتتە ئەڭ قېنىق رەڭلىرى بىر گۇرۇپپا، نورمال رەڭلىرى بىر گۇرۇپپا، سۇس رەڭلىرى بىر گۇرۇپپا بويىچە ئايرىلىپ، ئەسلى رەھىمنىڭ ئىزناسى شەكىللەندى. دېمەك موشۇ خىل ئۇسسۇلدا توپلىما گۇرۇپپىلارغا بۆلىۋالغاندىن كېيىن، ھەربىر گۇرۇپپىنى بىرلىك قىلىپ، ئىنتايىن چوڭ بولغان سانلىق مەلۇماتلارنى قولاي بىر تەرەپ قىلىشقا بولىدۇ.
يۇقارقى قۇرۇق گەپلەرنى مەيلى چۈشىنىڭ - چۈشەنمەڭ، تۆۋەندە شۇنچە جاپادا پۈتكەن كودلارنى ۋە ئاددىيلا سىناق نەتىجىسىنى چاپلاپ قويدۇم، قېنى تەپسىلاتىغا مەرھەمەت:
ئاۋۋال ئۈنۈمىنى كۆرىمىز: ئەسلى بىر رەڭلىك گۈل ئىدى، ئاۋۋال رەڭسىز ھالەتكە ئايلاندۇرۇپ، ئاندىن يۇقارقى ئۇسسۇل بويىچە رەڭ نوقتىلىرىنىڭ قىممىتىنى گۇرۇپپىلارغا بۆلۈپ تەھلىل قىلىش ئارقىلىق ئاخىرىدا پۈتكۈل رەسىم ئاساسەن ئۈچ رايۇنغا بۆلۈندى.

رەسىمدىن كېيىن كود قىسى كەتتى. ئەلۋەتتە Matlab دېتالىغا چاپلاپ، مۇندەرىجىگە ئىسمى gul.jpg بولغان بىرەر رەسىمنى تاشلاپ، ئۈنۈمىنى كۆرۈپ باقسىڭىز بولىدۇ.

clc
clear
tic
RGB= imread ('gul.jpg'); % resimni oqup alimiz
img=rgb2gray(RGB); %resim renggini RGB qimmet boyiche alimiz
[m,n]=size(img);
subplot(2,2,1),imshow(img);title(' resim1: Esli resim')
subplot(2,2,2),imhist(img);title(' resim2: rengsiz esli resim')
hold off;
img=double(img);
for i=1:200
    c1(1)=25;
    c2(1)=125;
    c3(1)=200; % Uch dane K noqtini tallap Toplima Guruppa boyiche tehlil qilish merkizini bikitimiz
    r=abs(img-c1(i));
    g=abs(img-c2(i));
    b=abs(img-c3(i));% Resim yuzidiki reng qimmetlirining K noqta arliqini tapimiz
    r_g=r-g;
    g_b=g-b;
    r_b=r-b;
    n_r=find(r_g<=0&r_b<=0);%Herqaysi qimmetlerni K noqtigha eng yiqin kilidighanliri boyiche uch Guruppigha ayriymiz
    n_g=find(r_g>0&g_b<=0);% her Guruppining merkizini tapimiz
    n_b=find(g_b>0&r_b>0);% eng chong  Guruppa merkizini tapimiz 
    i=i+1;
    c1(i)=sum(img(n_r))/length(n_r);%Barche reng qimmetlirining otturiche qimmitini tepip, kiyinki reng qimmitining merkizi qilimiz 
    c2(i)=sum(img(n_g))/length(n_g);%Barche reng qimmetlirining otturiche qimmitini tepip, kiyinki reng qimmitining merkizi qilimiz 
    c3(i)=sum(img(n_b))/length(n_b);%Barche reng qimmetlirining otturiche qimmitini tepip, kiyinki reng qimmitining merkizi qilimiz 
    d1(i)=abs(c1(i)-c1(i-1));
    d2(i)=abs(c2(i)-c2(i-1));
    d3(i)=abs(c3(i)-c3(i-1));
    if d1(i)<=0.001&d2(i)<=0.001&d3(i)<=0.001
         R=c1(i);
         G=c2(i);
         B=c3(i);
         k=i; 
         break;
    end
end
R 
G 
B
img=uint8(img);
img(find(imgR&imgG))=255;
toc
subplot(2,2,3),imshow(img);title(' resim3: Toplashturulghan resim') 
subplot(2,2,4),imhist(img);title('resim4: toplashturulghandin kiyinki diagiramma')

بۇلارنىمۇ ياقتۇرۇپ قالىسىز

ئۆز - ئۆزۈمنى ئىزدەش بوسۇغىسىدا...


ئۈنچىلەر (5)
نەقىللەر (0)
  1. چاشقان [ جۇغلانما: 29 نومۇر ] unknowunknow دىۋان 2014/04/03 21:03

    بەك مۇرەككەپ چۈشەندۈرۈپسىز جۇمۇ! Matlab نىڭ كۈچلۈك ئىقتىدارىغا مەنمۇ بەك قايىل. بۇنى سىزىقلىق ئالگىبرا دەرسىدە تېخىمۇ بەك ھېس قىلغان ئىدىم.Matlab نىڭ ئەڭ چول ئالاھىدىلىكىنى كومپىلىكىس ساننى ھېسابلاش بىرلىكى قىلغانلىقىمىكىن دەيمەن.ئۇنىڭدىن باشقا ئېچىش ئىقتىدارىمۇ ناھايىتى كۈچلۈك.بۇنىمۇ شۇنداق ئۆگەنگۈم بولسىمۇ لېكىن بەك تاشلىنىپ قالدى.

  2. سايىۋەن [ جۇغلانما: 5 نومۇر ] unknowunknow گىلەم 2014/09/25 16:46

    بۇنى ئۈگۈنىشنى باشلاپ كەتتىم تەشناكا. بۇنى سىناپ باققان ئىدىم، پەچەت چىقىپتۇ ،ئازراق ئۈگۈنۈپ بۇلۇپ سىز بىلەن ئاندىن پىكىر ئالماشتۇراي.ھەھە :توۋا : :توۋا :

  • كۆچۈرۈلمە يوق

ئۈنچە قالدۇرۇش