图像处理 色彩查找表

2017-02-25 15:54:00 attilax 阅读数 446
  • 肤色检测

    学会自己查阅opencv doxygen文档 学会编写opencv代码实现简单图像处理变换 初步了解图像算法及机器视觉基础 运用计算机视觉相关知识和opencv库来构建简单的应用程序。

    253人学习 金圣韬
    免费试看

atitit.颜色查找 根据范围  图像处理 inRange 

 

使用opencvinRange 结果又问题,不能找到。调整多次,麻烦,只好使用java实现。

 

原理就是判断范围,如果是的设置为白色,否则黑色。

 

/atiplat_img/src/com/attilax/img/CoreImg.java

 

public static BufferedImage inRange(BufferedImage src, HSV low, HSV hi) {

BufferedImage dst=imgx.new_BackgroudColor_black(src.getWidth(), src.getHeight());

HsvRangeV2 hr=new HsvRangeV2(low, hi);

 ImgTraver_lineScaner itl=new ImgTraver_lineScaner(src);

 itl.cur_Pix_Point_process_Fun_Handler=p->{

  int clr_int=src.getRGB(p.x,p. y);

 Color clr=new Color(clr_int);

 HSV hsv=ColorUtil.rgb2hsv(clr_int);

 if(p.x==409 && p.y==257)

 {

 System.out.println("dbg");

 }

 if(hr.contain(hsv))

 {

 dst.setRGB(p.x,p. y, Color.white.getRGB());

 }

 

 };

 itl.trav();

return dst;

}

:: 绰号:老哇的爪子claw of Eagle 偶像破坏者Iconoclast image-smasher

捕鸟王"Bird Catcher  kok  虔诚者Pious 宗教信仰捍卫者 Defender Of the Faith. 卡拉卡拉红斗篷 Caracalla red cloak 万兽之王

简称:: Emir Attilax Akbar 埃米尔 阿提拉克斯 阿克巴

全名::Emir Attilax Akbar bin Mahmud bin  attila bin Solomon bin adam Al Rapanui 埃米尔 阿提拉克斯 阿克巴 马哈茂德 阿提拉 所罗门 本亚当  阿尔 拉帕努伊

常用名:艾提拉(艾龙),  EMAIL:1466519819@qq.com

 

 

头衔:uke总部o2o负责人,全球网格化项目创始人,

uke交友协会会长  uke捕猎协会会长 Emir Uke部落首席大酋长,

 

uke宗教与文化融合事务部部长, uke宗教改革委员会副主席

uke制度与重大会议委员会委员长,uke保安部首席大队长,uke制度检查委员会副会长,

 

uke 首席cto   软件部门总监 技术部副总监  研发部门总监主管  产品部副经理 项目部副经理   uke科技研究院院长uke软件培训大师

 

uke波利尼西亚区大区连锁负责人 汤加王国区域负责人 uke克尔格伦群岛区连锁负责人,莱恩群岛区连锁负责人,uke布维岛和南乔治亚和南桑威奇群岛大区连锁负责人

 Uke软件标准化协会理事长理事长 Uke 数据库与存储标准化协会副会长

 

uke终身教育学校副校长   Uke医院 与医学院方面的创始人

 uec学院校长, uecip图像处理机器视觉专业系主任   uke文档检索专业系主任

Uke图像处理与机器视觉学院首席院长

Uke 户外运动协会理事长  度假村首席大村长   uke出版社编辑总编

 

转载请注明来源:attilax的专栏  ?http://blog.csdn.net/attilax

--Atiend  v8

 

2017-11-18 16:51:18 u010963435 阅读数 2507
  • 肤色检测

    学会自己查阅opencv doxygen文档 学会编写opencv代码实现简单图像处理变换 初步了解图像算法及机器视觉基础 运用计算机视觉相关知识和opencv库来构建简单的应用程序。

    253人学习 金圣韬
    免费试看

openCV中的查找表

首次见识LUT是在openCV官方文档:How to scan images, lookup tables and time measurement with OpenCV文章中通过一个图像色彩压缩的例子,对比LUT与其他三种图像遍历方法的时间耗费,表明LUT具有快速遍历图像的能力。

从数学上来看查找表是一个简单的一对一或多对一的函数,定义了如何将像素转换为新的值。从数据的组织关系上来看,查找表是一维或多维的数组,存储了不同输入值所对应的输出值。查找表在图像处理中主要用于像素的点运算,尤其是像素之间无位置相关性的操作中,如:图像色彩空间压缩图像取反图像分割直方图均衡化等仅需要考虑像素值的应用。当需要对图像应用窗口运算等与像素位置相关的操作时,就不能使用查找表。(修改自http://www.voidcn.com/article/p-dypyzpta-bgz.html)

查找表使用赋值操作取代计算操作来节省时间耗费,仅需一次遍历就能完成操作任务。

    uchar table[256];
    for (int i = 0; i < 256; ++i)
       table[i] = (uchar)(divideWith * (i/divideWith));
    ··· ···
    for( i = 0; i < nRows; ++i)
    {
        p = Img.ptr<uchar>(i);
        for ( j = 0; j < nCols; ++j)
        {
            p[j] = table[p[j]]; //这也应该算是一种查找表[映射]
        }
    }

在Matlab、Numpy中有一种使用logical/bool 类型的矩阵作为索引,进行批量操作矩阵元素的方法,也可以认为是一种查找表。

%%@ matlab code
a = magic(5);
b = ones(5);
a(a>b) = 0; %将a>b矩阵元素赋值为0

更多参考:
http://blog.csdn.net/jameshater/article/details/50759650

2007-10-28 23:45:00 lanphaday 阅读数 101965
  • 肤色检测

    学会自己查阅opencv doxygen文档 学会编写opencv代码实现简单图像处理变换 初步了解图像算法及机器视觉基础 运用计算机视觉相关知识和opencv库来构建简单的应用程序。

    253人学习 金圣韬
    免费试看
用Python做图像处理
       最近在做一件比较 evil 的事情——验证码识别,以此来学习一些新的技能。因为我是初学,对图像处理方面就不太了解了,欲要利吾事,必先利吾器,既然只是做一下实验,那用 Python 来作原型开发再好不过了。在 Python 中,比较常用的图像处理库是 PIL(Python Image Library),当前版本是 1.1.6 ,用起来非常方便。大家可以在 http://www.pythonware.com/products/pil/index.htm 下载和学习。
       在这里,我主要是介绍一下做图像识别时可能会用到的一些 PIL 提供的功能,比如图像增强、还有滤波之类的。最后给出使用 Python 做图像处理与识别的优势与劣势。
基本图像处理
       使用 PIL 之前需要 import Image 模块:
import Image
       然后你就可以使用Image.open(‘xx.bmp’) 来打开一个位图文件进行处理了。打开文件你不用担心格式,也不用了解格式,无论什么格式,都只要把文件名丢给 Image.open 就可以了。真所谓 bmp、jpg、png、gif……,一个都不能少。
img = Image.open(‘origin.png’)    # 得到一个图像的实例对象 img
1原图
       图像处理中,最基本的就是色彩空间的转换。一般而言,我们的图像都是 RGB 色彩空间的,但在图像识别当中,我们可能需要转换图像到灰度图、二值图等不同的色彩空间。 PIL 在这方面也提供了极完备的支持,我们可以:
new_img = img.convert(‘L’)
把 img 转换为 256 级灰度图像, convert() 是图像实例对象的一个方法,接受一个 mode 参数,用以指定一种色彩模式,mode 的取值可以是如下几种:
· 1 (1-bit pixels, black and white, stored with one pixel per byte)
· L (8-bit pixels, black and white)
· P (8-bit pixels, mapped to any other mode using a colour palette)
· RGB (3x8-bit pixels, true colour)
· RGBA (4x8-bit pixels, true colour with transparency mask)
· CMYK (4x8-bit pixels, colour separation)
· YCbCr (3x8-bit pixels, colour video format)
· I (32-bit signed integer pixels)
· F (32-bit floating point pixels)
怎么样,够丰富吧?其实如此之处,PIL 还有限制地支持以下几种比较少见的色彩模式:LA (L with alpha), RGBX (true colour with padding) and RGBa (true colour with premultiplied alpha)。
下面看一下 mode 为 ‘1’、’L’、’P’时转换出来的图像:
2 mode = '1'
3 mode = 'L'
4 mode = 'P'
convert() 函数也接受另一个隐含参数 matrix,转换矩阵 matrix 是一个长度为4 或者16 tuple。下例是一个转换 RGB 空间到 CIE XYZ 空间的例子:
    rgb2xyz = (
        0.412453, 0.357580, 0.180423, 0,
        0.212671, 0.715160, 0.072169, 0,
        0.019334, 0.119193, 0.950227, 0 )
    out = im.convert("RGB", rgb2xyz)
       除了完备的色彩空间转换能力外, PIL 还提供了resize()、rotate()等函数以获得改变大小,旋转图片等几何变换能力,在图像识别方面,图像实例提供了一个 histogram() 方法来计算直方图,非常方便实用。
图像增强
       图像增强通常用以图像识别之前的预处理,适当的图像增强能够使得识别过程达到事半功倍的效果。 PIL 在这方面提供了一个名为 ImageEnhance 的模块,提供了几种常见的图像增强方案:
import ImageEnhance
enhancer = ImageEnhance.Sharpness(image)
for i in range(8):
    factor = i / 4.0
    enhancer.enhance(factor).show("Sharpness %f" % factor)
上面的代码即是一个典型的使用 ImageEnhance 模块的例子。 Sharpness 是 ImageEnhance 模块的一个类,用以锐化图片。这一模块主要包含如下几个类:Color、Brightness、Contrast和Sharpness。它们都有一个共同的接口 .enhance(factor) ,接受一个浮点参数 factor,标示增强的比例。下面看看这四个类在不同的 factor 下的效果
5 使用Color 进行色彩增强,factor 取值 [0, 4],步进 0.5
6 用 Birghtness 增强亮度,factor取值[0,4],步进0.5
7用 Contrast 增强对比度, factor 取值 [0,4],步进0.5
8用 Sharpness 锐化图像,factor取值 [0,4],步进0.5
图像 Filter
       PIL 在 Filter 方面的支持是非常完备的,除常见的模糊、浮雕、轮廓、边缘增强和平滑,还有中值滤波、ModeFilter等,简直方便到可以做自己做一个Photoshop。这些 Filter 都放置在 ImageFilter 模块中,ImageFilter主要包括两部分内容,一是内置的 Filter,如 BLUR、DETAIL等,另一部分是 Filter 函数,可以指定不同的参数获得不同的效果。示例如下:
import ImageFilter
im1 = im.filter(ImageFilter.BLUR)
im2 = im.filter(ImageFilter.MinFilter(3))
im3 = im.filter(ImageFilter.MinFilter()) # same as MinFilter(3)
可以看到 ImageFilter 模块的使用非常简单,每一个 Filter 都只需要一行代码就可调用,开发效率非常高。
 
9使用 BLUR
10使用 CONTOUR
11使用 DETAIL
12使用 EMBOSS
13使用 EDGE_ENHANCE
14使用 EDGE_ENHANCE_MORE
15使用 FIND_EDGES
16使用 SHARPEN
17使用 SMOOTH
18使用 SMOOTH_MORE
       以上是几种内置的 Filter 的效果图,除此之外, ImageFilter 还提供了一些 Filter 函数,下面我们来看看这些可以通过参数改变行为的 Filter 的效果:
19使用 Kernel(),参数:size = (3, 3), kernel = (0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5)
20使用 MaxFilter,默认参数
21使用 MinFilter,默认参数
22使用 MedianFilter,默认参数
23使用 ModeFilter,参数 size = 3
24使用 RankFilter,参数 size = 3, rank = 3
小结
       到此,对 PIL 的介绍就告一段落了。总的来说,对于图像处理和识别,PIL 内建了强大的支持,从各种增强算法到 Filter ,都让人无法怀疑使用 Python 的可行性。 Python唯一的劣势在于执行时间过慢,特别是当实现一些计算量大的算法时候,需要极强的耐心。我曾用 Hough Transform(霍夫变换)来查找图像中的直线,纯 Python 的实现处理一个 340 * 100 的图片也要花去数秒时间(P4 3.0G + 1G memory)。但使用 PIL 无需关注图像格式、内建的图像增强算法和 Filter 算法,这些优点使 Python 适合用于构造原型和进行实验,在这两方面Python 比 matlab 更加方便。商业的图像识别产品开发,可以考虑已经被 boost accepted的来自 adobe 的开源 C++ 库 gil,可以兼顾执行性能和开发效率。
2017-11-19 17:25:03 gangzhucoll 阅读数 2533
  • 肤色检测

    学会自己查阅opencv doxygen文档 学会编写opencv代码实现简单图像处理变换 初步了解图像算法及机器视觉基础 运用计算机视觉相关知识和opencv库来构建简单的应用程序。

    253人学习 金圣韬
    免费试看

一、本节简述

本节讲解图像色彩空间的处理和色彩空间的基础知识

二、色彩空间基础知识

什么是色彩空间,人们建立了多种色彩模型,以一维、二维、三维甚至四维空间坐标来表示某一色彩,这种坐标系统所能定义的色彩范围即色彩空间

色彩空间有很多,但是常用的色彩空间一共5种:RGB、HSV、HSI、YCrCb、YUV,简单讲一下这5个色彩空间。

  • RGB就不用多说了,RGB是我门经常用到的;
  • HSV也称六角锥体模型,是根据颜色的直观特性创建的一种颜色空间,这个颜色空间是本节课讲解的一个重点。
  • HSI是从人的视觉系统出发,用色调(  Hue  )、色饱和  度(  Saturation  或  Chroma  )和亮度(  Intensity  或  Brightness  )来描述颜色。  HSI  颜色空间可以用一个圆  锥空间模型来描述
  • YCrCb主要用于优化彩色视频信号的传输,使其向后相容老式黑白电视,这个可以用来检测皮肤和检测人脸
  • YUV是被欧洲电视系统所采用的一种颜色编码方法(属于PAL),是PAL和SECAM模拟彩色电视制式采用的颜色空间。


三、色彩空间的转换

OpenCV提供多种将图像的色彩空间转换为另一个色彩空间的方法,转换方法的方法名一般为 “原色彩空间2需要转化的色彩空间”,下面我们以图像的RGB色彩转换为其他四种色彩空间和GRAY色彩空间。

 

def ColorSpace(image):
    """
    色彩空间转化
    RGB转换为其他色彩空间
    """
    gray=cv.cvtColor(image,cv.COLOR_BGR2GRAY)
    cv.imshow("gray",gray)
    hsv=cv.cvtColor(image,cv.COLOR_RGB2HSV)
    cv.imshow("hsv",hsv)
    yuv=cv.cvtColor(image,cv.COLOR_RGB2YUV)
    cv.imshow("yuv",yuv)
    ycrcb=cv.cvtColor(image,cv.COLOR_RGB2YCrCb)
    cv.imshow("ycrcb",ycrcb)

 


四、标记图像中的特定颜色

 

一般对颜色空间的图像进行有效处理都是在HSV空间进行的,然后对于基本色中对应的HSV分量需要给定一个严格的范围,下面是网友通过实验计算的模糊范围(准确的范围在网上都没有给出)。

H:  0 — 180

S:  0 — 255

V:  0 — 255

以下是不同颜色的HSV最大最小的范围:

以下代码是标注出图像中的黑色部分,黑色部分将以白色显示,其他颜色部分将以黑色显示,颜色标注OpenCV 提供了一个方法,inRange()。该方法提供三个参数,第一个参数是图像色彩空间即hsv值,第二个参数是hsv的最小查找范围,第三个参数是hsv的最大查找范围。代码运行后,将会标注出图像的黑色部分。

 

capture=cv.VideoCapture("test.mp4")
    while(True):
        ret,frame=capture.read()
        if ret==False:
            break;
        hsv=cv.cvtColor(frame,cv.COLOR_BGR2HSV)
        lower_hsv=np.array([0,0,0])
        upperb_hsv = np.array([180, 255, 46])
        mask=cv.inRange(hsv,lowerb=lower_hsv,upperb=upperb_hsv)
        cv.imshow("video_mask", mask)
        cv.imshow("video",frame)
        c=cv.waitKey(40)
        if c==27:
            break;
 

 

觉得不错打赏一下

 

2016-03-03 14:39:15 EbowTang 阅读数 11353
  • 肤色检测

    学会自己查阅opencv doxygen文档 学会编写opencv代码实现简单图像处理变换 初步了解图像算法及机器视觉基础 运用计算机视觉相关知识和opencv库来构建简单的应用程序。

    253人学习 金圣韬
    免费试看
作者:mimi

图像的变换 

① fft2:fft2函数用于数字图像的二维傅立叶变换,如:i=imread('104_8.tif');

j=fft2(i);

②ifft2::ifft2函数用于数字图像的二维傅立叶反变换,如:

 i=imread('104_8.tif');

 j=fft2(i);

 k=ifft2(j);


噪声生成函数

① imnoise:用于对图像生成模拟噪声,如:

 i=imread('104_8.tif');

 j=imnoise(i,'gaussian',0,0.02);%模拟高斯噪声


定义滤波器

② fspecial:用于产生预定义滤波器,如:

h=fspecial('sobel');%sobel水平边缘增强滤波器

h=fspecial('gaussian');%高斯低通滤波器

h=fspecial('laplacian');%拉普拉斯滤波器

h=fspecial('log');%高斯拉普拉斯(LoG)滤波器

h=fspecial('average');%均值滤波器

 

图像的增强

①直方图:imhist函数用于数字图像的直方图显示,如:

i=imread('104_8.tif');

imhist(i);

②直方图均化:histeq函数用于数字图像的直方图均化,如:

i=imread('104_8.tif');

j=histeq(i);

③对比度调整:imadjust函数用于数字图像的对比度调整,如:i=imread('104_8.tif');

j=imadjust(i,[0.3,0.7],[]);

④对数变换:log函数用于数字图像的对数变换,如:

i=imread('104_8.tif');

j=double(i);

k=log(j);

⑤基于卷积的图像滤波函数:filter2函数用于图像滤波,如:i=imread('104_8.tif');

h=[1,2,1;0,0,0;-1,-2,-1];

j=filter2(h,i);

⑥线性滤波:利用二维卷积conv2滤波, 如:

i=imread('104_8.tif');

h=[1,1,1;1,1,1;1,1,1];

h=h/9;

j=conv2(i,h);

⑦中值滤波:medfilt2函数用于图像的中值滤波,如:

i=imread('104_8.tif');

j=medfilt2(i);

⑧锐化

(1)利用Sobel算子锐化图像, 如:

i=imread('104_8.tif');

h=[1,2,1;0,0,0;-1,-2,-1];%Sobel算子

j=filter2(h,i);

(2)利用拉氏算子锐化图像, 如:

i=imread('104_8.tif');

j=double(i);

h=[0,1,0;1,-4,0;0,1,0];%拉氏算子

k=conv2(j,h,'same');

m=j-k;

 

图像边缘检测

①sobel算子 如:

i=imread('104_8.tif');

j = edge(i,'sobel',thresh)

②prewitt算子 如:

i=imread('104_8.tif');

j = edge(i,'prewitt',thresh)

③roberts算子  如:

i=imread('104_8.tif');

j = edge(i,'roberts',thresh)

④log算子  如:

i=imread('104_8.tif');

j = edge(i,'log',thresh)

⑤canny算子 如:

i=imread('104_8.tif');

j = edge(i,'canny',thresh)

⑥Zero-Cross算子 如:

i=imread('104_8.tif');

j = edge(i,'zerocross',thresh)

 

形态学图像处理

①膨胀:是在二值化图像中“加长”或“变粗”的操作,函数imdilate执行膨胀运算,如:

a=imread('104_7.tif'); %输入二值图像

b=[0 1 0;1 1 1;0 1 0];

c=imdilate(a,b);

②腐蚀:函数imerode执行腐蚀,如:

a=imread('104_7.tif'); %输入二值图像

b=strel('disk',1);

c=imerode(a,b);

③开运算:先腐蚀后膨胀称为开运算,用imopen来实现,如:

 a=imread('104_8.tif');

b=strel('square',2);

c=imopen(a,b);

④闭运算:先膨胀后腐蚀称为闭运算,用imclose来实现,如:

 a=imread('104_8.tif');

b=strel('square',2);

c=imclose(a,b);

 

===========================================================

Matlab 图像处理相关函数命令大全

一、通用函数:

colorbar  显示彩色条

语法:colorbar colorbar('vert') colorbar('horiz') colorbar(h) h=colorbar(...) colorbar(...,'peer',axes_handle)

getimage 从坐标轴取得图像数据

语法:A=getimage(h) [x,y,A]=getimage(h) [...,A,flag]=getimage(h) [...]=getimage


imshow 显示图像

语法:imshow(I,n) imshow(I,[low high]) imshow(BW) imshow(X,map) imshow(RGB) imshow(...,display_option) imshow(x,y,A,...) imshow filename h=imshow(...)


montage 在矩形框中同时显示多幅图像

语法:montage(I) montage(BW) montage(X,map) montage(RGB) h=montage(...)


immovie 创建多帧索引图的电影动画

语法:mov=immovie(X,map) mov=immovie(RGB)


subimage 在一副图中显示多个图像

语法:subimage(X,map) subimage(I) subimage(BW)   subimage(RGB) subimage(x,y,...) subimage(...)


truesize 调整图像显示尺寸

语法:truesize(fig,[mrows mcols]) truesize(fig)


warp 将图像显示到纹理映射表面

语法:warp(X,map) warp(I ,n) warp(z,...) warp(x,y,z,...)   h=warp(...)


zoom 缩放图像

语法:zoom on zoom off zoom out zoom reset zoom zoom xon zoom yon zoom(factor) zoom(fig,option)

 

二、图像文件I/O函数命令

imfinfo  返回图形图像文件信息

语法:info=imfinfo(filename,fmt) info=imfinfo(filename)


imread  从图像文件中读取(载入)图像

语法:A=imread(filename,fmt) [X,map]=imread(filename,fmt) [...]=imread(filename) [...]=imread(URL,...) [...]=imread(...,idx) (CUR,ICO,and TIFF only) [...]=imread(...,'frames',idx) (GIF only) [...]=imread(...,ref) (HDF only) [...]=imread(...,'BackgroundColor',BG) (PNG only) [A,map,alpha] =imread(...) (ICO,CUR,PNG only)


imwrite  把图像写入(保存)图像文件中

语法:imwrite(A,filename,fmt) imwrite(X,map,filename,fmt) imwrite(...,filename) imwite(...,Param1,Val1,Param2,Val2...)


imcrop  剪切图像

语法:I2=imcrop(I) X2=imcrop(X,map) RGB2=imcrop(RGB) I2=imcrop(I,rect) X2=imcrop(RGB,rect) [...]=imcrop(x,y,...) [A,rect]=imcrop(...) [x,y,A,rect]=imcrop(...)


imresize  改变图像大小

语法:B=imresize(A,m,method)


imrotate  旋转图像

语法:B=imrotate(A,angle,method) B=imrotate(A,angle,method,'crop')

 

三、像素和统计处理函数

corr2  计算两个矩形的二维相关系数

语法:r=corr2(A,B)


imcontour 创建图像数据的轮廓图

语法:imcontour(I,n) imcontour(I,v) imcontour(x,y,...) imcontour(...,LineSpec) [C,h] =imcontour(...)


imfeature  计算图像区域的特征尺寸

语法:stats=imfeature(L,measurements) stats=imfeature(L,measurements,n)


imbist  显示图像数据的柱状图


impixel 确定像素颜色值

语法:P=impixel(I) P=impixel(X,map) P=impixel(RGB) P=impixel(I,c,r) P=impixel(X,map,c,r) P=impixel(RGB,c,r) [c,r,P]=impixel(...) P=impixel(x,y,I,xi,yi) P=impixel(x,y,RGB,xi,yi) P=impixel(x,y,X,map,xi,yi)

[xi,yi,P]=impixel(x,y,...)


improfile 沿线段计算剖面图的像素值

语法:c=improfile c=improfile(n) c=improfile(I,xi,yi) c=improfile(I,xi,yi,n)   [cx,cy,c]=improfile(...) [cx,cy,c,xi,yi]=improfile(...) [...]=improfile(x,y,I,xi,yi)   [...]=improfile(x,y,I,xi,yi,n) [...]=improfile(...,method)


mean2 计算矩阵元素的平均值

语法:B=mean2(A)


pixval  显示图像像素信息

语法:pixval on


std2 计算矩阵元素的标准偏移

语法:b=std2(A)

 

四、图像分析函数:

edge 图像边缘检测

语法:BW=edge(I,'sobel') BW=edge(I,'sobel',thresh) BW=edge(I,'sobel',thresh,direction) [BW,thresh]=edge(I,'sobel',...) BW=edge(I,'prewitt') BW=edge(I,'prewitt',thresh) BW=edge(I,'prewitt',thresh,direction)

[BW,thresh]=edge(I,'prewitt',...)   BW=edge(I,'roberts') BW=edge(I,'roberts',thresh) [BW,thresh]=edge(I,'roberts',...) BW=edge(I,'log') BW=edge(I,'log',thresh) BW=edge(I,'log',thresh,sigma) [BW,threshold]=edge(I,'log',...) BW=edge(I,'zerocross',thresh,h) [BW,thresh]=edge(I,'zerocross',...)

BW=edge(I,'canny') BW=edge(I,'canny',thresh) BW=edge(I,'canny',thresh,sigma) [BW,threshold]=edge(I,'canny',...)

qtgetblk  获取四叉树分解的块值

语法:[vals,r,c]=qtgetblk(I,S,dim) [vals,idx]=qtgetblk(I,S,dim)

qtsetblk 设置四叉树分解中的块值

语法:J=qtsetblk(I,S,dim,vals)

 

五、图像增强函数

histeq 用柱状图均等化增强对比

语法:J=histeq(I,hgram) J=histeq(I,n) [J,T]=histeq(I,...) newmap=histeq(X,map,hgram) newmap=histeq(X,map)

imadjust 调整图像灰度值或颜色映像表

语法:J=imadjust(I,[low_in ,high_in]),[low_out ,high_out],gamma) newmap=imadjust(map,[low_in ,high_in]),[low_out ,high_out],gamma) RGB2=imadjust(RGB1,...)

imnoise 增强图像的渲染效果

语法:J=imnoise(I,type) J=imnoise(I,type,parameters)

medfilt2 进行二维中值过滤

语法:B=medfilt2(A,[m n]) B=medfilt2(A) B=medfilt2(A,'indexed',...)

ordfilt2 进行二维统计顺序过滤

语法:B=ordfilt2(A,order,domain) B=ordfilt2(A,order,domain,S) B=ordfilt2(...,padopt)

wiener2 进行二维适应性去噪过滤处理

语法:J=wiener2(I,[m  n],noise) [J,noise]=wiener2(I,[m n])

 

六、线性滤波函数

conv2 进行二维卷积操作

语法:C=conv2(A,B) C=conv2(hcol,hrow,A) C=conv2(...,'shape')

convmtx2 计算二维卷积矩阵

语法:T=convmtx2(H,m,n) T=convmtx2(H,[m n])

convn 计算n维卷积

语法:C=convn(A,B) C=convn(A,B,'shape')

filter2 进行二维线性过滤操作

语法:Y=filter2(h,X) Y=filter2(h,X,shape)

fspecial 创建预定义过滤器

语法:h=fspecial(type) h=fspecial(type,parameters)

 

七、线性二维滤波设计函数

freqspace 确定二维频率响应的频率空间

语法:[f1,f2]=freqspace(n) [f1,f2]=freqspace([m n]) [x1 ,y1]=freqspace(...,'meshgrid') f=freqspace(N) f=freqspace(N,'whole')

freqz2 计算二维频率响应

语法:[H,f1,f2]=freqz2(h,n1,n2) [H,fi,f2]]=freqz2(h,[n2,n1]) [H,fi,f2]]=freqz2(h,f1,f2]) [H,fi,f2]]=freqz2(h) [...]=freqz2(h,...,[dx dy]) [...]=freqz2(h,...,dx) freqz2(...)

fsamp2 用频率采样法设计二维FIR过滤器

语法:h=fsamp2(Hd) h=fsamp2(f1,f2,Hd,[m n])

ftrans2 通过频率转换设计二维FIR过滤器

语法:h=ftrans2(b,t) h=ftrans2(b)

fwind1 用一维窗口方法设计二维FIR过滤器

语法:h=fwind1(Hd,win) h=fwind1(Hd,win1,win2) h=fwind1(f1,f2,Hd,...)

fwind2 用二维窗口方法设计二维FIR过滤器

语法:h=fwind2(Hd,win) h=fwind2(f1,f2,Hd,win)

 

八、图像变换函数

dct2 进行二维离散余弦变换(反余弦变换用idct2)

语法:B=dct2(A) B=dct2(A,m.n) B=dct2(A,[m n])

dctmtx 计算离散余弦傅立叶变换

语法:D=dctmtx(n)

fft2 进行二维快速傅立叶变换(反变换用ifft2)

语法:Y=fft2(X) Y=fft2(X,m,n)

fftn 进行n维快速傅立叶变换(反变换用ifftn)

语法:Y=ffn(X) Y=fftn(X,siz)

fftshift 快速傅立叶变换的DC组件移到光谱中心

语法:Y=fftshift(X) Y=fftshift(X,dim)

iradon 进行反radon变换

语法:I=iradon(P,theta) I=iradon(P,theta,interp,filter,d,n) [I,h]=iradon(...)

phantom 产生一个头部幻影图像

语法:P=phantom(def,n) P=phantom(E,n) [P,E]=phantom(...)

radon 计算radon变换

语法:R=radon(I,theta) [R,xp]=radon(...)

 

九、边沿和块处理函数

bestblk 确定进行块操作的块大小

语法:siz=bestblk([m n],k) [mb,nb]=bestblk([m n],k)

blkproc 实现图像的显示块操作

语法:B=blkproc(A,[m n]),fun) B=blkproc(A,[m n],fun,P1,P2,...) B=blkproc(A,[m n],[mborder nborder],fun,...)

col2im 将矩阵的列重新组织到块中

语法:A=col2im(B,[m n],[mm nn],block_type) A=col2im(B,[m n],[mm nn])

colfilt 利用列相关函数进行边沿操作

语法:B=colfilt(A,[m n],block_type,fun) B=colfilt(A,[m n],block_type,fun,P1,P2,...) B=colfilt(A,[m n],[mblock nblock],...) B=colfilt(A,'indexed',...)

im2col 重调图像块为列

语法:B=im2col(A,[m n],block_type) B=im2col(A,[m n]) B=im2col(A,'indexed',...)

nlfilter 进行边沿操作

语法:B=nlfilter(A,[m n],fun) B=nlfilter(A,[m n],fun,P1,P2,...) B=nlfilter(A,'indexed',...)

 

十、二进制图像操作函数

applylut 在二进制图像中利用lookup表进行行边沿操作

语法:A=applylut(BW,LUT)

bwarea 计算二进制图像对象的面积

语法:total=bwarea(BW)

bweuler 计算二进制图像的欧拉数

语法:eul=bweuler(BW)

bwfill 填充二进制图像的背景色

语法:BW2=bwfill(BW1,c,r,n) BW2=bwfill(BW1,n) [BW2,idx]=bwfill(...) BW2=bwfill(x,y,BW1,xi,yi,n) [x,y,BW2,idx,xi,yi]=bwfill(...)   [BW2,idx]=bwfill(BW1,'holes',n)

bwlabel 标注二进制图像中已连接的部分

语法:L=bwlabel(BW,n) [L,num]=bwlabel(BW,n)

bwmorph 提取二进制图像的轮廓

语法:BW2=bwmorph(BW1,operation) BW2=bwmorph(BW1,operation,n)

bwperim 计算二进制图像中对象的周长

语法:BW2=bwperim(BW1) BW2=bwperim(BW1,CONN)

bwselect 在二进制图像中选择对象

语法:BW2=bwselect(BW1,c,r,n) BW2=bwselect(BW1,n) [BW2,idx]=bwselect(...) BW2=bwselect(x,y,BW1,xi,yi,n) [x,y,BW2,idx,xi,yi]=bwselect(...)

dilate 放大二进制图像

语法:BW2=dilate(BW1,SE) BW2=dilate(BW1,SE,alg) BW2=dilate(BW1,SE,...,n)

erode 弱化二进制图像的边界

语法:BW2=erode(BW1,SE) BW2=erode(BW1,SE,alg) BW2=erode(BW1,SE,...,n)

makelut 创建一个用于applylut函数的lookup表

语法:lut=makelut(fun,n) lut=makelut(fun,n,P1,P2,...)

 

十一、区域处理函数

roicolor 选择感兴趣的颜色区

语法:BW=roicolor(A,low,high) BW=rocicolor(A,v)

roifill 在图像的任意区域中进行平滑插补

语法:J=roifill(I,c,r) J=roifill(I) J=roifill(I,BW) [J,BW]=roifill(...) J=roifill(x,y,I,xi,yi) [x,y,J,BW,xi,yi]=roifill(...)

roifilt2 过滤敏感区域

语法:J=roifilt2(h,I,BW) J=roifilt2(I,BW,fun) J=roifilt2(I,BW,fun,P1,P2,...)

roipoly 选择一个敏感的多边形区域

语法:BW=roipoly(I,c,r) BW=roipoly(I) BW=roipoly(x,y,I,xi,yi) [BW,xi,yi]=roipoly(...) [x,y,BW,xi,yi]=roipoly(...)

 

十二、颜色映像处理函数

brighten 增加或降低颜色映像表的亮度

语法:brighten(beta) brighten(h,beta) newmap=brighten(beta) newmap=brighten(cmap,beta)

cmpermute 调整颜色映像表中的颜色

语法:[Y,newmap]=cmpermute(X,map) [Y,newmap]=cmpermute(X,map,index)

cmunigue 查找颜色映像表中特定的颜色及相应的图像

语法:[Y,newmap]=cmunigue(X,map) [Y,newmap]=cmunigue(RGB) [Y,newmap]=cmunique(I)

imapprox 对索引图像进行近似处理

语法:[Y,newmap]=imapprox(X,map,n)   [Y,newmap]=imapprox(X,map,tol) Y=imapprox(X,map,newmap) [...]=imapprox(...,dither_option)

rgbplot 划分颜色映像表

语法:rgbplot(cmap)

 

十三、颜色空间转换函数

hsv2rgb 转换HSV值为RGB颜色空间:M=hsv2rgb(H)

ntsc2rgb 转换NTSC值为RGB颜色空间:rgbmap=ntsc2rgb(yiqmap) RGB=ntsc2rgb(YIQ)

rgb2hsv 转换RGB值为HSV颜色空间:cmap=rgb2hsv(M)

rgb2ntsc 转换RGB值为NTSC颜色空间:yiqmap=rgb2ntsc(rgbmap) YIQ=rgb2ntsc(RGB)

rgb2ycbcr 转换RGB值为YCbCr颜色空间:ycbcrmap=rgb2ycbcr(rgbmap) YCBCR=rgb2ycbcr(RGB)

ycbcr2rgb 转化YCbCr值为RGB颜色空间:rgbmap=ycbcr2rgb(ycbcrmap) RGB=ycbcr2rgb(YCBCR)

 

十四、图像类型和类型转换函数

dither 通过抖动增加外观颜色分辨率转换图像

语法:X=dither(RGB,map) BW=dither(I)

gray2ind 转换灰度图像为索引图像

语法:[X,map]=gray2ind(I,n) [X,map]=gray2ind(BW,n)

grayslice 从灰度图像为索引图像

语法:X=grayslice(I,n) X=grayslice(I,v)

im2bw 转换图像为二进制图像

语法:BW=im2bw(I,level) BW=im2bw(X,map,level) BW=im2bw(RGB,level)

im2double 转换图像矩阵为双精度型

语法:I2=im2double(I1) RGB2=im2double(RGB1) I=im2double(BW) X2=im2double(X1,'indexed')

double 转换数据为双精度型

语法:double(X)

unit8 、unit16转换数据为8位、16位无符号整型: i=unit8(x) i=unit16(x)

im2unit8 转换图像阵列为8位无符号整型

语法:I2=im2unit8(I1) RGB2=im2unit8(RGB1) I=im2unit8(BW) X2=im2unit8(X1,'indexed')

im2unit16 转换图像阵列为16位无符号整型

语法:I2=im2unit16(I1) RGB2=im2unit16(RGB1) I=im2unit16(BW) X2=im2unit16(X1,'indexed')

ind2gray 把检索图像转化为灰度图像

语法:I=ind2gray(X,map)

ind2rgb  转化索引图像为RGB真彩图像

语法:RGB=ind2rgb(X,map)

isbw 判断是否为二进制图像

语法:flag=isbw(A)

isgray 判断是否为灰度图像

语法:flag=isgray(A)

isind 判断是否为索引图像

语法:flag=isind(A)

isrgb 判断是否为RGB真彩色图像

语法:flag=isrgb(A)

mat2gray 转换矩阵为灰度图像

语法:I=mat2gray(A,[amin amax]) I=mat2gray(A)

rgb2gray 转换RGB图像或颜色映像表为灰度图像

语法:I=rgb2gray(RGB) newmap=rgb2gray(map)

rgb2ind 转换RGB图像为索引图像

语法:[X,map]=rgb2ind(RGB,tol) [X,map]=rgb2ind(RGB,n) X=rgb2ind(RGB,map) [...]=rgb2ind(...,dither_option)

 

十五、新增图像处理工具箱函数

adapthisteq 限制对比度直方图均衡化: J=adapthisteq(I) J=adapthisteq(I,param1,val1,param2,val2...)

applycform 用于颜色空间变换 out=applyform(I,C)

bwboundaries 描绘二进制图像边界

语法: B=bwboundaries(BW) B=bwboundaries(BW,CONN) B=bwboundaries(BW,CONN,options) [BW,CONN,options] [BL]=bwboundaries(...) [BLNA]=bwboundaries()

bwtraceboundary 描述二进制图像中的物体

B=bwtraceboundary(BW,P,fstep) B=bwtraceboundary(BW,P,fstep,CONN) B=bwtraceboundary(...N,dir)

decorrstrech 对多通道图像进行去相关处理

语法:S=decorrstretch(I) S=decorrstretch(I,TOL)

dicomdict 获取或读取DICOM文件

语法:dicomdict('set',dictionary) dictionary=dicomdict('get')

getline 用鼠标选择ployline

语法:[x,y]=getline(fig) [x,y]=getline(ax) [x,y]=getline [x,y]=getline(...,'closed')

getpts 用鼠标选择像素点

语法:[x,y]=getpts(fig) [x,y]=getpts(ax) [x,y]=getpts

getrect 用鼠标选择矩阵

语法:rect=getrect(fig) rect=getrect(ax) rect=getrect(fig)

iccread 读取ICC剖面

语法:P=iccread(filename)

im2java2d 将图像转换为Java缓冲图像

语法:jimage=im2java2d(I) jimage=im2java2d(X,MAP)

imview 在图像与蓝旗中显示图像

语法:imview(I)   imview(RGB) imview(X,map) imview(I,range) imview(filename) imview(....'InitialMagnification',initial_mag) h=imview(...)    imview close all

ippl 检查IPPL的存在

语法:TF=ippl [TF B]=ippl

iptdemos 显示图像处理工具箱中的索引图像

lab2double、lab2unit16、lab2unit8 将L*a*b数据分别转换为双精度、16位数据、8位数据

makecform 创造一个色彩转换结构

poly2mask 把多边形区域转换成mask区域

语法:BW=poly2mask(x,y,m,n)

unitlut 查找表中A像素值

语法:B=unitlut(A,LUT)

xyz2double、xyz2unit16 将颜色数据从XYZ转换到双精度、16进制。

语法:xyzd=xyz2double(XYZ) xyz16=xyz2unit16(xyz)