From 15a8d87e57325827c4e485b89c2e9a57ffd73a5c Mon Sep 17 00:00:00 2001 From: SungPhill Moon Date: Tue, 9 Jun 2015 18:30:52 +0900 Subject: [PATCH] =?UTF-8?q?9.=20Clustering=20and=20Image=20Segmentation=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84=20-=EA=B2=B0=EA=B3=BC=20=EC=9D=B4=EB=AF=B8?= =?UTF-8?q?=EC=A7=80=20=EC=B2=A8=EB=B6=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Homework_9/ImageSegmentation.py | 44 +++++++++++++++++++++++ Homework_9/KMeans.py | 48 +++++++++++++++++++++++++ Homework_9/MeanShift.py | 58 +++++++++++++++++++++++++++++++ Homework_9/Result_KMeans.png | Bin 0 -> 2680 bytes Homework_9/Result_MeanShift.png | Bin 0 -> 619 bytes Homework_9/Result_Spectral.png | Bin 0 -> 1112 bytes Homework_9/SegmentationTest.py | 14 ++++++++ Homework_9/SpectralClustering.py | 48 +++++++++++++++++++++++++ Homework_9/sample.png | Bin 0 -> 31120 bytes Homework_9/sample2.png | Bin 0 -> 9011 bytes 10 files changed, 212 insertions(+) create mode 100644 Homework_9/ImageSegmentation.py create mode 100644 Homework_9/KMeans.py create mode 100644 Homework_9/MeanShift.py create mode 100644 Homework_9/Result_KMeans.png create mode 100644 Homework_9/Result_MeanShift.png create mode 100644 Homework_9/Result_Spectral.png create mode 100644 Homework_9/SegmentationTest.py create mode 100644 Homework_9/SpectralClustering.py create mode 100644 Homework_9/sample.png create mode 100644 Homework_9/sample2.png diff --git a/Homework_9/ImageSegmentation.py b/Homework_9/ImageSegmentation.py new file mode 100644 index 0000000..a8a4359 --- /dev/null +++ b/Homework_9/ImageSegmentation.py @@ -0,0 +1,44 @@ +import matplotlib.pyplot as plt +import matplotlib.image as mpimg +from MeanShift import MeanShift +from KMeans import K_Means +from SpectralClustering import Spectral +import numpy + +def segmentation(img, method): + #Image to Nomalized vector + size = img.shape + data = numpy.zeros(shape=(size[2]+1, size[0]*size[1])) + label = numpy.zeros(shape=(data.shape[1])) + result = numpy.zeros(shape=(img.shape)) + + for row in range(size[0]): + for col in range(size[1]): + #Normalize pixel position 0.0~1.0 + data[0][row*size[1]+col] = float(row) / float(size[0]-1) + data[1][row*size[1]+col] = float(col) / float(size[1]-1) + for color in range(size[2]-1): + data[color+2][row*size[1]+col] = img[row][col][color] + + #clustring - input : ndarray(colum vector) + if method == "MEAN-SHIFT": + label = MeanShift(data, 0.4) #radius 0.4 + elif method == "K-MEANS": + label = K_Means(data, 8) #8 cluster + elif method == "SPECTRAL": + label = Spectral(data, 8) s #8 cluster + + #clustring result to image + for row in range(size[0]): + for col in range(size[1]): + result[row][col][0] = float(label[row*size[1]+col] * 29 % 100) / 100.0 + result[row][col][1] = float(label[row*size[1]+col] * 13 % 100) / 100.0 + result[row][col][2] = float(label[row*size[1]+col] * 37 % 100) / 100.0 + result[row][col][3] = 1.0 + + plt.imsave("result.png", result) + plt.imshow(result) + plt.show() + + + return 0 diff --git a/Homework_9/KMeans.py b/Homework_9/KMeans.py new file mode 100644 index 0000000..0005d22 --- /dev/null +++ b/Homework_9/KMeans.py @@ -0,0 +1,48 @@ +import numpy +import random +import copy + +def K_Means(data, nClass): + label = numpy.zeros(shape=(data.shape[1])) + prvLabel = numpy.zeros(shape=(data.shape[1])) + nLabel = numpy.zeros(shape=(nClass)) + CovPos = numpy.zeros(shape=(data.shape[0], nClass)) + tCov = numpy.zeros(shape=(data.shape[0], nClass)) + + + #init random point + tsize = tCov.shape + for row in range(tsize[0]): + for col in range(tsize[1]): + tCov[row][col] = random.random() + + #Loop until convergence + while 1: + CovPos = copy.copy(tCov) + tCov[:] = 0.0 + nLabel[:] = 0.0 + + for i in range(data.shape[1]): + Mindist = 9999.0 + for j in range(nClass): + sub = CovPos[:,j] - data[:,i] + dist = numpy.dot(sub, sub) + + if Mindist > dist: + Mindist = dist + label[i] = j + + tCov[:,label[i]] += data[:,i] + nLabel[label[i]] += 1 + + if label.all() == prvLabel.all(): + break + + for i in range(tCov.shape[1]): + if nLabel[i] != 0: + tCov[:,i] /= nLabel[i] + prvLabel = label[:] + + label[:] += 1 + + return label diff --git a/Homework_9/MeanShift.py b/Homework_9/MeanShift.py new file mode 100644 index 0000000..0880f40 --- /dev/null +++ b/Homework_9/MeanShift.py @@ -0,0 +1,58 @@ +import numpy +import copy + +def MeanShift(data, rad): + label = numpy.zeros(shape=(data.shape[1])) + CovPos = numpy.zeros(shape=(data.shape)) + Idx = [] + prevIdx = [] + + rad = rad*rad + + #Mean-shift algorithm + for n in range(data.shape[1]): + #Initialize convergence point + CovPos[:,n] = copy.copy(data[:,n]) + del Idx[:] + del prevIdx[:] + + while 1: + prevIdx = copy.copy(Idx[:]) + del Idx[:] + + for i in range(data.shape[1]): + #euclidean distance calculation + sub = CovPos[:,n] - data[:,i] + dist = numpy.dot(sub, sub) + + if dist <= rad: + Idx.append(i) + + #convergence check + if prevIdx == Idx: + break + if len(Idx) == 0: + break + + #Center search + CovPos[:,n] = 0.0 + for j in range(len(Idx)): + CovPos[:,n] += data[:, Idx[j]] + CovPos[:,n] /= float(len(Idx)) + + #Merge Converge Point + cCount = 1 + for n in range(len(label)): + if label[n] == 0: + label[n] = cCount + for i in range(len(label)): + if label[i] != 0: + continue + #euclidean distance calculation + sub = CovPos[:,n] - CovPos[:,i] + dist = numpy.sqrt(numpy.dot(sub, sub)) + if dist <= 0.01: + label[i] = cCount + cCount+=1 + + return label diff --git a/Homework_9/Result_KMeans.png b/Homework_9/Result_KMeans.png new file mode 100644 index 0000000000000000000000000000000000000000..2d6fd03c1a6df74465aec62a7a2b2281ead743ac GIT binary patch literal 2680 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 Q`>!Lw0p*NrfM34zFXwb0#Q*>R literal 0 HcmV?d00001 diff --git a/Homework_9/Result_MeanShift.png b/Homework_9/Result_MeanShift.png new file mode 100644 index 0000000000000000000000000000000000000000..ad0e84dc912731a6daff90cba9ee84fe369d343f GIT binary patch literal 619 zcmeAS@N?(olHy`uVBq!ia0vp^AZ*UT1|;W;$`%1BmSQK*5Dp-y;YjHK@;M7UB8wRq z_!B{xafSWzOa=xfUQZXtkcv5PXYKbpY#`9CzoP%*QEs9919N)62u@h#6?^lBfO1mu z>#h*Rj~pedtUhshcxZ6HXXMsAw&Uae_(w6t_d`N`U;VBrFS{cqp7qa_XT=qp?*jh< zSF#EUp1m^1?-O6E`Rpp+&GR|urO0tt$GuWl5}J52=as48#3^Q6f}Bn+O#%}YTvRv& zIh$HfY~DTlj&s2wrzf}H*1l7;NK~A}oZ}jnwb9;0f+@$qi{556a*0*`{p0uQqwz29uWQ~0*Id`G*>Ix$ba2$vk4n3l_A<0i ztK9bX{Dfc2doOgpjD2!}^_9u&y6IQEbTcL?8~7RVUp$c;_})hW?syTX1X-{KXyef_gv{pO9F zpU&Q!Q{=3@W_qagwl}%gc}FPxT&fgIjSd-1=_YNb>lP@% z-c`-Gkh0)FUMqbl)4?E9L8oagGo_xeN9Y6mWxrt zvRb%|vw>xdhZ2|+CDUW=vUcyfx*aDe$Mv@YH7p#DVq|Fu0Faag%Q};yr2A6nbGsgy z3(g@%(g>8phUG~)fT+&5e)#FFY1>bBrtxa@7|B`yl}ym|SfjQkMG5G#00Ze5bC z;%hQbbzbV!&IRY%_U)YvWA9`bZGRnS780!xS63jdtO6OQXE&yj2_g=9i9jP-H~)3T>1x)IP^v!i%p^UmQdx;e zx6#uH($#F!XCtvmS!jqX7o!MAi?&ao3?g}<)|TRS`otKSWt!HVpjE1t&0q$758oeJ zMx<6+UeNy~pe-}&KfOw;$eFqyagxHv7vC_lG-OYt9rWaB@w!MY>1r06!R8L$^}mQT zsqHnC`KUsxL;!3e(kvQ#QLG+509c>iu{CWmLKcAs7OCCq_<%;#JUyC+vTZh@=IGOR z?aLN_h>8K8T#xKVxJX8Dk&NhfGg@=b@d3>%Hhi?EqhAph6(x1*!*LFu{xHHcgi$l#pyyUF`?>!}zvoTOprlyp2_Xqk{?O5oy+^URK5?4(L+b zNM@muQ(wJ=o%>N!TW=6?BBa;k8S!X$3eTr@+x9b=N79b&O1*BM31|lug|UeP0Ow*a zY(j1o!QCJ?MrIoiGFY(l^J?csy6FNsDOWEF&FI>QG@=tSok|2Q__wxE-|95&&DwDy zK1OEMZ96Hgr7IRKoZhguo*nesUca-8$8V;Z+S-VeEZZ^?+!Z3-p!X%vEW~K*Y(z>} zEJd0=n<1^NdS4{aK8?~!vC~yJInGFGPl$9vtE|>Xq-nWyt3Pp)YD#aX{j<@rmo6e( eX%$Hum45-_wzf{9KqBA(0000 0: + # label[j] += numpy.power(2,j) + + for i in range(nClass-1): + for j in range(data.shape[1]): + if y[j,i+1] > 0: #check row vector or col vector + label[j] += numpy.power(2,i) + + + return label diff --git a/Homework_9/sample.png b/Homework_9/sample.png new file mode 100644 index 0000000000000000000000000000000000000000..a6fdd0b41001d2e67090ced30c42a3fda98db2b8 GIT binary patch literal 31120 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 Z{trGo!?b?LHs$~T002ovPDHLkV1i0s*|Got literal 0 HcmV?d00001