颜色聚类

这是一个按照图片颜色深浅的聚类算法

 1 function [ result ] = my_kcluster_random( imgAddress )
 2 %UNTITLED Summary of this function goes here
 3 %   Detailed explanation goes here
 4 img_original = imread(imgAddress);                %读入图像
 5 img_gray = rgb2gray(img_original);
 6 [m, n] = size(img_gray);
 7 temp = zeros(m*n,1);
 8 temp_one = zeros(m*n,1);
 9 temp_two = zeros(m*n,1);
10 % 将图像进行RGB——3通道分解
11 R = reshape(img_original(:, :, 1), m*n, 1);    % 将RGB分量各转为kmeans使用的数据格式n行,一样一样本
12 G = reshape(img_original(:, :, 2), m*n, 1);
13 B = reshape(img_original(:, :, 3), m*n, 1);
14 dR = double(R);
15 dG = double(G);
16 dB = double(B);
17 x1 = 1;
18 temp(x1) = 1;
19 temp_one(1) = x1;
20 mn = m * n;
21 max = 0.0;
22 i = 1;
23 for k = 1 : mn                               %选取第二个类的初始点
24     dist = sqrt((dR(x1)-dR(k))^2 + (dG(x1)-dG(k))^2 + (dB(x1)-dB(k))^2);
25     if(dist > max)
26         max = dist;
27         i = k;
28     end
29 end
30 x2 = i;
31 temp(x2) = 2;
32 temp_two(1) = x2;
33 one = 1;
34 two = 1;
35 dist_cluster_one = 65535;
36 dist_cluster_two = 65535;
37 for k = 1 : mn                                         %聚类
38     if(temp(k) == 0 && x1 > 0 && x2 > 0)
39          dist_cluster_one = sqrt((dR(x1)-dR(k))^2 + (dG(x1)-dG(k))^2 + (dB(x1)-dB(k))^2);
40          dist_cluster_two = sqrt((dR(x2)-dR(k))^2 + (dG(x2)-dG(k))^2 + (dB(x2)-dB(k))^2);
41     end
42     if(dist_cluster_one < dist_cluster_two)
43             temp(k) = 1;
44             one = one + 1;
45             temp_one(one) = k;
46     else
47             temp(k) = 2;
48             two = two + 1;
49             temp_two(two) = k;
50     end
51     x1 = rand(1,1) * one;
52     x1 = int8(x1) + 1;
53     x1 = temp_one(x1);
54     x2 = rand(1,1) * two;
55     x2 = int8(x2) + 1;
56     x2 = temp_two(x2);
57 end
58 for k = 1 : mn                                 %将其中一类用红色点显示
59     if(temp(k) == 1)
60         R(k) = 0;
61         G(k) = 0;
62         B(k) = 0;
63     end
64 end
65
66 for k = 1 : mn                                 %将其中一类用红色点显示
67     if(temp(k) == 2)
68         R(k) = 255;
69         G(k) = 255;
70         B(k) = 255;
71     end
72 end
73
74 dat = [R, G, B];
75 result = reshape(dat,m,n,3);
76
77 end

对文件夹中的图片处理

 1 function [ output_args ] = ccluster_compare(  )
 2 %UNTITLED5 Summary of this function goes here
 3 %   Detailed explanation goes here
 4 pictures1 = dir(‘C:\Users\george\Desktop\obj1\*.png‘);
 5 pictures2 = dir(‘C:\Users\george\Desktop\obj2\*.png‘);
 6 [rp cp] = size(pictures1);
 7 for i = 1:rp
 8     img = strcat(‘C:\Users\george\Desktop\obj1\‘,pictures1(i).name);
 9     result = my_cluster(img);
10     img = strcat(‘C:\Users\george\Desktop\obj1\1obj\‘,pictures1(i).name);
11     saveas(result,img);
12     img = strcat(‘C:\Users\george\Desktop\obj2\‘,pictures2(i).name);
13     result = my_cluster(img);
14     img = strcat(‘C:\Users\george\Desktop\obj2\2obj\‘,pictures1(i).name);
15     saveas(result,img);
16 end
17 end

颜色聚类

时间: 2024-11-09 18:23:27

颜色聚类的相关文章

颜色聚类方法综述

毕业了,毕业论文也可以拿来晒晒了.觉的自己的论文涉及的知识点特别多,用到了很多图像处理和机器学习方面的技术.第三章主要是讲的颜色聚类的方法用来提取自然场景文本的候选连通域.(工作了时间不是很多,先把文章发上来,一周之内在好好拓展并整理). 一.颜色聚类的优点 分析自然场景文本的特点可得,在一个文本区域内部,一般一个字符内部的颜色变化不大.对于一幅24位RGB彩色图,需要处理的颜色范围达到 .显然,大范围.高精度的颜色对于文本定位来说是没有必要的,所以本章先用颜色聚类的方式来缩小颜色空间的范围,增

matlab实现MSER(最大极值稳定区域)来进行文本定位

一.自然场景文本定位综述   场景图像中文本占据的范围一般都较小,图像中存在着大范围的非文本区域.因此,场景图像文本定位作为一个独立步骤越来越受到重视.这包括从最先的CD和杂志封面文本定位到智能交通系统中的车牌定位.视频中的字幕提取,再到限制条件少,复杂背景下的场景文本定位.与此同时文本定位算法的鲁棒性越来越高,适用的范围也越来越广泛.文本定位的方式一般可以分为三种,基于连通域的.基于学习的和两者结合的方式.基于连通域的流程一般是首先提取候选文本区域,然后采用先验信息滤除部分非文本区域,最后根据

计算机视觉目标跟踪的算法分类

摘自百度百科............. (1)基于区域的跟踪算法 基于区域的跟踪算法基本思想是:将目标初始所在区域的图像块作为目标模板,将目标模板与候选图像中所有可能的位置进行相关匹配,匹配度最高的地方即为目标所在的位置.最常用的相关匹配准则是差的平方和准则,(Sum of Square Difference,SSD). 起初,基于区域的跟踪算法中所用到的目标模板是固定的,如 Lucas 等人提出 Lucas-Kanade 方法,该方法利用灰度图像的空间梯度信息寻找最佳匹配区域,确定目标位置.之

第四章(上)

第四章 The cv::Mat Class: N-Dimensional Dense Arrays Mat n维稠密阵列 The cv::Mat class can be used for arrays of any number of dimensions. The data is                  mat可以作为任意维的数组.这些数据可以被认为以"光栅扫描" stored in the array in what can be thought of as an n-

Atitit 图像处理之仿油画效果&#160;Oilpaint油画滤镜 水彩画 漫画滤镜&#160;v2

Atitit 图像处理之仿油画效果 Oilpaint油画滤镜 水彩画 漫画滤镜 v2 1.1. 具体源码参考1 2. ,油画 水彩画具有几个比较明显的特点如下:1 2.1. 明暗层次(灰度)较少  也就5级别够用了1 2.2. 颜色泛用   使用的颜色比较单一,一般不会超过7种颜色,不像真实照片那样,具有丰富的颜色种类:2 3. 水彩画滤镜算法如下:2 3.1. 这个其实就是灰度层次降低维度的过程.3 3.2. 模板半径Radius用来调节水彩画的水彩程度.即是颜色的降低维度的过程3 3.3.

SOM自组织映射网络 教程

概述 SOM是芬兰教授Teuvo Kohonen提出的一种神经网络算法,它提供一种将高维数据在低维空间进行表示的方法(通常是一维或二维).缩减向量维度的过程,叫做向量量化(vector quantisation).此外,SOM网络能保留原有数据的拓扑关系. 一个用来直观感受SOM网络规则的例子,是将3维颜色映射到二维空间,如图所示. 图1 左图的颜色是按(r,g,b)组合形式表示的,SOM网络经过学习后能他这些颜色在二维空间进行表示.如右图所示:为了让颜色聚类,相似的属性通常被发现是相邻的.这种

机器学习Matlab实战之图像压缩————Kmeans算法

本系列来自于我<人工智能>课程复习总结以及机器学习部分的实验总结 Kmeans是机器学习中最经典的无监督学习聚类算法,本文复习了无监督学习定义和Kmeans算法,然后提出了一种基于Kmeans算法的图像压缩方案,并给出了其在Matlab中的实现 1.无监督学习 通过非标记数据样本(Xi→),i=1,...,N且Xi→∈,来学习发现这些无标记样本之间内在的相似联系,叫做无监督学习 无监督学习由于没有标记,那就不存在学习误差或奖惩函数来评估一个可行解,这是无监督学习和监督学习最大的差别 2.Km

OpenCV优化:图像的遍历4种方式

OpenCV优化:图像的遍历4种方式 分类: 算法学习2014-04-13 23:43 1312人阅读 评论(0) 收藏 举报 opencv 目录(?)[+] OpenCV优化:图像的遍历4种方式 我们在实际应用中对图像进行的操作,往往并不是将图像作为一个整体进行操作,而是对图像中的所有点或特殊点进行运算,所以遍历图像就显得很重要,如何高效的遍历图像是一个很值得探讨的问题. 一.遍历图像的4种方式:at<typename>(i,j) Mat类提供了一个at的方法用于取得图像上的点,它是一个模板

Latent Semantic Analysis(LSA)

背景:什么是LSA? Latent Semantic Analysis(LSA)中文翻译为潜语义分析,也被叫做Latent Semantic Indexing ( LSI ).意思是指通过分析一堆(不止一个)文档去发现这些文档中潜在的意思和概念,什么叫潜在的意思?我第一次看到这个解释,直接懵逼.其实就是发现文档的中心主题吧?假设每个词仅表示一个概念,并且每个概念仅仅被一个词所描述,LSA将非常简单(从词到概念存在一个简单的映射关系). 根据常识我们知道两个很常见的语言现象:1. 存在不同的词表示