实验的主要内容是将truecolor的图片通过一个优化算法得到其256色的最优表示.本实验采用kmean做算法对像素的色彩进行聚类的计算,分类得到一个色彩数为256的CodeBook,和一个包含有CodeBook索引的矩阵,原图片的颜色值都从CodeBook中获取,colorMap矩阵保存其中像素颜色的索引值,这样通过索引恢复出一个近似的图片文件,达到比传统的GIF图像更好的效果. 由上图可见,256色的GIF图像有明显的颗粒感,这是因为图像发色数过低造成的颜色不连贯. 上图是通过优化算法计算的…
原文:Win8 Metro(C#)数字图像处理--2.66FloodFill算法  [函数名称]   洪水填充算法函数 WriteableBitmap FloodfillProcess(WriteableBitmap src,Point location, Color fillColor, int threshold) 2,以这个点为起点,将它压入栈中,假设我们要填充的颜色为A,则将该点颜色设置为A,然后判断它的四邻域像素,这里我们设置一个颜色阈值T,假设当前像素灰度值为P(x,y),四邻域…
本篇文章首先介绍了bmp图片格式,主要参考wiki上的内容,包括bmp文件的存储方式,对于一些常见的bmp文件格式都给了例子,并且对8位 16位RGB555 16位RGB565格式的bmp文件进行了简单分析,最后的代码可以将8位,16位,24位,32位色彩深度的bmp文件转化位8位灰度图片,用作后续文章中算法的测试图片. Bmp file structure Bitmap file header DIB header (bitmap information header) compression…
from sklearn.datasets import load_sample_image from sklearn.cluster import KMeans import matplotlib.pyplot as plt #读取一张示例图片或自己准备的图片,观察图片存放数据特点 china = load_sample_image("china.jpg") plt.imshow(china) plt.show() print(china.shape) #根据图片的分辨率,适当降低分…
一.读取一张示例图片或自己准备的图片,观察图片存放数据特点. 根据图片的分辨率,可适当降低分辨率. 再用k均值聚类算法,将图片中所有的颜色值做聚类. 然后用聚类中心的颜色代替原来的颜色值. 形成新的图片. 观察原始图片与新图片所占用内存的大小. 将原始图片与新图片保存成文件,观察文件的大小. #读取一张示例图片或自己准备的图片,观察图片存放数据特点 from sklearn.datasets import load_sample_image from sklearn.cluster import…
plt.imshow(china[:,:,2]) plt.show() from sklearn.datasets import load_sample_image china=load_sample_image('china.jpg') print(china.shape) china import matplotlib.pyplot as plt plt.imshow(china) plt.show() plt.imshow(china[:,:,0],plt.cm.gray) plt.sho…
大家接触的第一个聚类方法,十有八九都是K-means聚类啦.该算法十分容易理解,也很容易实现.其实几乎所有的机器学习和数据挖掘算法都有其优点和缺点.那么K-means的缺点是什么呢? 总结为下: (1)对于离群点和孤立点敏感: (2)k值选择; (3)初始聚类中心的选择: (4)只能发现球状簇. 对于这4点呢的原因,读者可以自行思考下,不难理解.针对上述四个缺点,依次介绍改进措施. 改进1 首先针对(1),对于离群点和孤立点敏感,如何解决?笔者在前面的一篇博客中,提到过离群点检测的LOF算法,通…
学过了数字图像处理,就进行一个综合性强的小项目来巩固一下知识吧.前阵子编写调试了一套基于MATLAB的车牌识别的项目的代码.今天又重新改进了一下代码,识别的效果好一点了,也精简了一些代码.这里没有使用神经网络等,只是用了最基础的数字图像处理算法,最后通过模板匹配,得到结果. 源码下载链接: 下载链接(注意:有两套,第二套是后来改进的,都能运行的) 运行结果: 这里读取了车牌图片目录中的第一幅图片,并显示出来了原图像:随后计算出车牌的区域,进行图像切割,单独把车牌提取出来:最后,从图像中切割出每个…
原文:Win8 Metro(C#)数字图像处理--2.75灰度图像的形态学算法 前面章节中介绍了二值图像的形态学算法,这里讲一下灰度图的形态学算法,主要是公式,代码略. 1,膨胀算法 2,腐蚀算法 3,开运算 开运算:先进行一次腐蚀运算,接着进行一次膨胀运算. 4,闭运算 闭运算即:先进行一次膨胀运算,接着进行一次腐蚀运算. 以上就是灰度图像的形态学算法.  最后,分享一个专业的图像处理网站(微像素),里面有很多源代码下载: http://www.zealpixel.com/portal.p…
原文:Win8 Metro(C#)数字图像处理--2.64图像高斯滤波算法  [函数名称]   高斯平滑滤波器      GaussFilter(WriteableBitmap src,int radius,double sigma) [算法说明]   高斯滤波器实质上是一种信号的滤波器,其用途是信号的平滑处理.它是一类根据高斯函数的 形状来选择权重的线性平滑滤波器,该滤波器对于抑制服从正态分布的噪声非常有效.高斯函数 的公式如下所示: private static double[,] Ga…