2018-11-14 18:23:42 qq_43678660 阅读数 286

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                原文地址:http://blog.sina.com.cn/s/blog_53c74fa1010002pn.html

做数字图像处理的,怎能没有一个图库?虽说自己可以建立,可是如果是比较知名的图库,做出来的实验结果才能比较让人信服。coral是很有名,可他要收费。我寻寻觅觅,还是找到了一些图库,有的是纯texture图库,比如著名的vistex,有的是faceimages,有的也有RGB真彩色图的。下面罗列了一些url,可以找到对应的。
 
1、http://vismod.media.mit.edu/
这是美国麻省media实验室的一个网页,该实验室在数字图像处理方面还是很有成就的。在download里面会有很多有用的东西。比如vistex or faceimages and others
 
2、http://www.dice.ucl.ac.be/mlg/index.php?page=DataBases
这是ucl的machine learning group的database
 
3、http://sipi.usc.edu/services/database/index.html
这是著名的美国南加州大学的USI-SIPI image database,有纹理图和真彩图
 
4、http://www.cs.washington.edu/research/imagedatabase/
这是华盛顿大学的Ground truth Database。这个图库我用的最多,因为目前做真彩色图作的比较多,而作单纯的纹理不是很多。该database里的图片都是RGB,jpeg格式的,对于matlab来说是很方便处理的。
 
所有图库我都下载过,链接均有效。当然我也不知道何时会失效,一般来说保留的时间应该比较长吧,因为都是大学在做的研究,前人学完了后人还需要。所以,基本上从我开始作发现这些图库开始,到现在已经半年了。依然保留着呢。

有需要的或者近期有需要的还是尽快下载吧。


http://decsai.ugr.es/cvg/dbimagenes/

Olivetti Research Laboratory in Cambridge人脸库


http://www.opencv.org.cn/opencvdoc/2.3.2/html/index.html


           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

这里写图片描述
2016-10-31 04:13:12 attilax 阅读数 1095

Atitit 图像处理 常用8大滤镜效果 Jhlabs 图像处理类库 java常用图像处理类库


1.1. 5种常用的Photoshop滤镜,分别针对照片的曝光、风格色调、黑白照片处理、锐利度、降噪这五大方向。坦 1
1.2. Java Image Filters 是由 Jhlabs 开发的一组用来处理 Java 图像的类库,提供各种常用的图像处理效果,例如反转色、扭曲、水波纹、凹凸、黑白效果等等数十种效果, 1
1.3. Photoshop CS6常用8大滤镜中文集合版 3
1.4. 史上超强图像处理开源工具包--ImageMagick  4
1.5. Thumbnailator是一个用来生成图像缩略图的Java类库 4
1.6. Java Image Filters它几乎提供了PS上大部分的图像特效 4
1.7. Apache Commons Imaging 前身是 Apache Commons Sanselan ,这是一个用来读写各种图像格式的 Java 类库 4




1.1.5种常用的Photoshop滤镜,分别针对照片的曝光、风格色调、黑白照片处理、锐利度、降噪这五大方向。坦
1.2.Java Image Filters 是由 Jhlabs 开发的一组用来处理 Java 图像的类库,提供各种常用的图像处理效果,例如反转色、扭曲、水波纹、凹凸、黑白效果等等数十种效果,
如下图所示,更多的效果请看其网站首页:
 ChannelMixFilter - Mixes the RGB channels
 ContrastFilter - Adjusts brightness and contrast
 CurvesFilter - Apply adjustment curves to an image
 DiffusionFilter - Error-diffusion dithering
 DitherFilter - Ordered dithering
 ExposureFilter - Change the exposure of an image
 GainFilter - Adjusts gain and bias
 GammaFilter - Adjusts image gamma
 GrayFilter - Grays out an image
 GrayscaleFilter - Converts to grayscale
 HSBAdjustFilter - Adjusts hue, saturation and brightness
 InvertAlphaFilter - Inverts the alpha channel
 InvertFilter - Inverts image colors
 LevelsFilter - Adjust image levels
 LookupFilter - Change image colors with a lookup table
 MapColorsFilter - Replace a color
 MaskFilter - Channel masking
 PosterizeFilter - Posterization
 QuantizeFilter - Quantize an image to 256 colors for, say, GIF export
 RescaleFilter - Multiplies colors by a scaling factor
 RGBAdjustFilter - Adjusts red, green and blue levels
 SolarizeFilter - Solarization
 ThresholdFilter - Thresholding
 TritoneFilter - Create a tri-tone image


1.3.Photoshop CS6常用8大滤镜中文集合版
hotoshop 中的滤镜主要是用来实现图像的各种特殊效果,它在Photoshop中具有非常重要的作用,是一个用于产生图像特殊效果的工具。滤镜的操作虽然非常简单,但是真正用起来却很难恰到好处。现为大家提供这款Photoshop CS6常用8大滤镜中文集合版,使用很简单。
八个滤镜包括:
1、Alien.Skin.xenofex2
2、Eye Candy 5 Textures
3、Eye Candy 4000
4、NikColorEfex3 
5、抽出滤镜
6、灯光工厂3.0
7、然烧的梨树
8、人像磨皮滤镜2.3
安装方法:直接解压路径Adobe Photoshop CS6\Plug-ins\Panels,重起Photoshop即可使用。
具体说明:
Alien Skin Xenofex 2.0 汉化版
Xenofex 是Alien Skin公司一款功能强大的滤镜软件,是各类图像设计师不可多得的好工具。
Xenofex 2 Xenofex滤镜主要分:
Baked Earth(干裂效果),它能制作出干裂的土地效果。
Constellation(星群效果),它能产生群星灿烂的效果。
Crumple(褶皱效果),它能产生十分逼真的褶皱效果。
Flag(旗子效果),它能制作出各种各样迎风飘舞的旗子和飘带效果。
Distress(撕裂效果),能制作出一些自然剥落或撕裂文字的效果。
Lightning(闪电效果),能产生无数变化的闪电效果。
Little fluffy clouds(云朵效果),能生成各种云朵效果。
Origami(毛玻璃效果),能生成一种毛玻璃看东西的效果。
Rounded rectangle(圆角矩形效果),能产生各种不同形状的边框效果。
Shatter(碎片效果),能生成一种镜子被打碎的效果。
Puzzle(拼图效果),能生成一种拼图的效果。
Shower door(雨景效果),能生成雨中看物体的效果。
Stain(污点效果),能为图片增加污点效果。
Television(电视效果),能生成一种老式电视的效果。
Electrify(充电效果),能产生一种充电的效果。
STMPER(压模效果),可以满足您对于特殊平面影像创作上的需求。


1.4.史上超强图像处理开源工具包--ImageMagick 
1.5.Thumbnailator是一个用来生成图像缩略图的Java类库
1.6.Java Image Filters它几乎提供了PS上大部分的图像特效
 是一款基于Java的图像处理类库,特别是在图像滤镜特效方面,Java Image Filters简直就是强大到天衣无缝。它几乎提供了PS上大部分的图像特效


强大的Java图像滤镜特效类库Java Image Filters – 码农网.html
1.7.Apache Commons Imaging 前身是 Apache Commons Sanselan ,这是一个用来读写各种图像格式的 Java 类库


作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 
汉字名:艾提拉(艾龙),   EMAIL:1466519819@qq.com
转载请注明来源: http://blog.csdn.net/attilax
Atiend

2017-04-14 09:40:15 sophia_xw 阅读数 380

数字图像处理常用方法

1,图像变换

傅里叶变换,沃尔什变换,离散余弦变换,小波变换

2,图像编码压缩

3,图像增强和复原

为了提高图像质量;
图像增强:不考虑图像降质原因
图像复原:考虑图像降质原因

4,图像分割

边缘、区域分割

5,图像描述

6,图像分类

预处理(增强、复原、压缩)=>图像分割,特征提取=>判决分类

修改中.......

2018-10-07 21:09:29 Ryan_lee9410 阅读数 224

 

目录

一、Matlab常用的统计函数

二、图像的读写、显示


一、Matlab常用的统计函数

求和 sum(X) 最小值 min(X)
均值 mean(X) 最大值 max(X)
x的平方根 sqrt(x) 标准差 std(X)
方差 var(X)或cov(X) 协方差 cov(X,Y)

MATLAB标准函数的功能可在命令行方式“>>”下,输入“help 函数名”查看。若不知道准确的函数名称,可通过输入“lookfor 关键字”模糊查找相关的函数或命令。

二、图像的读写、显示

(1)MATLAB也提供的图像类型转换函数
如:A = rgb2gray(RGB)                              %将真彩色图像转换成灰度图像

(2)MATLAB提供的图像读、写、显示函数
如:A = imread(‘file name.后缀名’)              %将图像读入数组A中
如:imshow(a)                                             %显示图像a
如:imwrite(a,‘图像文件名2’)                       %将图像a保存为某图像文件

(3)RGB空间与CMY空间的转换
如:I2=imcomplement(I1)                            %图像I1的补

(4)RGB空间与HSV空间的转换
如:HSV=rgb2hsv(RGB)                             %RGB空间转成HSV空间
如:RGB=hsv2rgb(HSV)                             %HSV空间转成RGB空间
 

不定期更新。。。

 

 


整理不易,打赏请扫二维码,感谢您的支持!

2012-09-20 11:43:30 rabbit729 阅读数 5514

  本系列文章将使用GPU实现图像处理中常用的算法,此处只给出代码,关于算法原理描述有很多资料,大家可以自行查找。不足之处请大家不吝赐教,共同提高。

/********************************
*  Author: rabbit729
*  E-mail: wlq_729@163.com
*  Date:   2012-09-20
*  Description: 图像的二值化
********************************/
#include <d3dx9.h>

//-----------------------------------------------------------------------------
// Desc: 全局变量
//-----------------------------------------------------------------------------
LPDIRECT3D9             g_pD3D                 = NULL;  //Direct3D对象
LPDIRECT3DDEVICE9       g_pd3dDevice           = NULL;  //Direct3D设备对象

LPDIRECT3DTEXTURE9      g_pTextureScreen        = NULL; //待处理图片

ID3DXEffect*            g_pEffect               = NULL;  //效果指针
//常量句柄
D3DXHANDLE              hTechScreen             = NULL;  //Effect句柄
D3DXHANDLE              hTexScreen              = NULL;  //纹理句柄
D3DXHANDLE              hViewPortWidthInv       = NULL;  //视口宽倒数句柄
D3DXHANDLE              hViewPortHeightInv      = NULL;  //视口高倒数句柄

LPDIRECT3DVERTEXBUFFER9 g_pScreenSpaceQuad      = NULL;  //背板VB

const int WIDTH  = 465;
const int HEIGHT = 669;

#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ | D3DFVF_TEX1)

struct Vertex
{
	Vertex(){}
	Vertex(float x, float y, float z, float w)
	{
		_x = x;   _y = y;   _z = z; _w = w;
	}

	float _x, _y, _z, _w;

	static const DWORD FVF;
};
const DWORD Vertex::FVF = D3DFVF_XYZW;


//-----------------------------------------------------------------------------
// Desc: 设置世界矩阵
//-----------------------------------------------------------------------------
VOID SetWorldMatrix()
{
	//创建并设置世界矩阵
	D3DXMATRIXA16 matWorld, matRotateX, matRotateY;
	D3DXMATRIXA16 matScale;
	D3DXMatrixIdentity(&matScale);
	matScale._11 = matScale._22 = matScale._33 = 0.5f;

	D3DXMatrixIdentity(&matWorld);
	D3DXMatrixIdentity(&matRotateX);
	D3DXMatrixIdentity(&matRotateY);
	D3DXMatrixRotationX( &matRotateX, D3DX_PI / 3.0 );
	D3DXMatrixRotationY( &matRotateY, -D3DX_PI / 8.0 );
	D3DXMatrixMultiply(&matWorld, &matRotateX, &matRotateY);

	D3DXMatrixMultiply(&matWorld, &matScale, &matWorld);
	g_pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld );
}


//-----------------------------------------------------------------------------
// Desc: 设置观察矩阵和投影矩阵
//-----------------------------------------------------------------------------
VOID SetViewAndProjMatrix()
{
	//创建并设置观察矩阵
	D3DXVECTOR3 vEyePt( 0.0f, 0.0f,-250.0f );
	D3DXVECTOR3 vLookatPt( 0.0f, 0.0f, 0.0f );
	D3DXVECTOR3 vUpVec( 0.0f, 1.0f, 0.0f );
	D3DXMATRIXA16 matView;
	D3DXMatrixLookAtLH( &matView, &vEyePt, &vLookatPt, &vUpVec );
	g_pd3dDevice->SetTransform( D3DTS_VIEW, &matView );

	//创建并设置投影矩阵
	D3DXMATRIXA16 matProj;
	D3DXMatrixPerspectiveFovLH( &matProj, D3DX_PI/4, 1.0f, 1.0f, 1000.0f );
	g_pd3dDevice->SetTransform( D3DTS_PROJECTION, &matProj );
}


//-----------------------------------------------------------------------------
// Desc: 初始化Direct3D
//-----------------------------------------------------------------------------
HRESULT InitD3D( HWND hWnd )
{
	//创建Direct3D对象, 该对象用于创建Direct3D设备对象
	if( NULL == ( g_pD3D = Direct3DCreate9( D3D_SDK_VERSION ) ) )
		return E_FAIL;

	//设置D3DPRESENT_PARAMETERS结构, 准备创建Direct3D设备对象
	D3DPRESENT_PARAMETERS d3dpp; 
	ZeroMemory( &d3dpp, sizeof(d3dpp) );
	d3dpp.Windowed = TRUE;
	d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
	d3dpp.BackBufferFormat = D3DFMT_A8R8G8B8;

	//创建Direct3D设备对象
	if( FAILED( g_pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
		D3DCREATE_SOFTWARE_VERTEXPROCESSING,
		&d3dpp, &g_pd3dDevice ) ) )
	{
		return E_FAIL;
	}

	//创建Effect
	ID3DXBuffer* errBuffer = NULL;
	if (FAILED(D3DXCreateEffectFromFile(g_pd3dDevice, L"erzhihua.fx", NULL, NULL, D3DXSHADER_DEBUG | D3DXSHADER_SKIPOPTIMIZATION, NULL, &g_pEffect, &errBuffer)))
	{
		if (errBuffer)
		{
			MessageBox(0, (LPCTSTR)errBuffer->GetBufferPointer(), 0, 0);
			errBuffer->Release();
		}
		return E_FAIL;
	}

	//获取常量句柄
	hTechScreen         = g_pEffect->GetTechniqueByName("Screen");
	hTexScreen          = g_pEffect->GetParameterByName(0, "TexScreen");
	hViewPortWidthInv   = g_pEffect->GetParameterByName(0, "viewport_inv_width");
	hViewPortHeightInv  = g_pEffect->GetParameterByName(0, "viewport_inv_height");

	//设置环境光
	g_pd3dDevice->SetRenderState( D3DRS_AMBIENT, 0xffffffff );

	//设置观察矩阵和投影矩阵
	SetViewAndProjMatrix();

	return S_OK;
}

//-----------------------------------------------------------------------------
// Desc: 创建场景图形
//-----------------------------------------------------------------------------
HRESULT InitGeometry()
{
	// 创建屏幕板
	g_pd3dDevice->CreateVertexBuffer(
		6 * sizeof(Vertex),
		D3DUSAGE_WRITEONLY,
		Vertex::FVF, 
		D3DPOOL_MANAGED,
		&g_pScreenSpaceQuad,
		0);

	Vertex* vertices;
	g_pScreenSpaceQuad->Lock(0, 0, (void**)&vertices, 0);

	vertices[0] = Vertex(-1.0f, 1.0f, 0.5f, 1.0f);
	vertices[1] = Vertex(1.0f,  1.0f, 0.5f, 1.0f);
	vertices[2] = Vertex( 1.0f, -1.0f, 0.5f, 1.0f);
	vertices[3] = Vertex(-1.0f, 1.0f, 0.5f, 1.0f);
	vertices[4] = Vertex( 1.0f, -1.0f, 0.5f, 1.0f);
	vertices[5] = Vertex( -1.0f, -1.0f, 0.5f, 1.0f);

	g_pScreenSpaceQuad->Unlock();

	//加载纹理
	HRESULT hr = D3DXCreateTextureFromFile(g_pd3dDevice, L"meinv.jpg", &g_pTextureScreen);
	if (FAILED(hr))
	{
		return E_FAIL;
	} 

	return S_OK;
}


//-----------------------------------------------------------------------------
// Desc: 释放创建的对象
//-----------------------------------------------------------------------------
VOID Cleanup()
{
	if (g_pScreenSpaceQuad != NULL)
	{
		g_pScreenSpaceQuad->Release();
	}

	if (g_pTextureScreen != NULL)
	{
		g_pTextureScreen->Release();
	}

	if (g_pEffect != NULL)
	{
		g_pEffect->Release();
	}

	//释放Direct3D设备对象
	if( g_pd3dDevice != NULL )
		g_pd3dDevice->Release();

	//释放Direct3D对象
	if( g_pD3D != NULL )
		g_pD3D->Release();
}

VOID RenderScreen()
{
	//将RenderTarget作为纹理
	g_pEffect->SetTexture(hTexScreen, g_pTextureScreen);

	float fWidthInv = 1.0f / WIDTH;
	float fHeightInv = 1.0f / HEIGHT;
	g_pEffect->SetFloat(hViewPortWidthInv, fWidthInv);
	g_pEffect->SetFloat(hViewPortHeightInv, fHeightInv);

	g_pd3dDevice->SetStreamSource(0, g_pScreenSpaceQuad, 0, sizeof(Vertex));
	g_pd3dDevice->SetFVF(Vertex::FVF);

	// 设置要使用的Technique
	g_pEffect->SetTechnique(hTechScreen);

	UINT numPasses = 0;
	g_pEffect->Begin(&numPasses, 0);

	for (int i = 0; i < numPasses; i++)
	{
		g_pEffect->BeginPass(i);

		g_pd3dDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 2);

		g_pEffect->EndPass();
	}
	g_pEffect->End();
}

//-----------------------------------------------------------------------------
// Desc: 渲染场景
//-----------------------------------------------------------------------------
VOID Render()
{    
	// 获取backbuffer
	LPDIRECT3DSURFACE9 pBackbuffer;
	g_pd3dDevice->GetRenderTarget(0, &pBackbuffer);

	//开始渲染场景
	if( SUCCEEDED( g_pd3dDevice->BeginScene() ) )
	{
		//设回backbuffer
		g_pd3dDevice->SetRenderTarget(0, pBackbuffer);
		RenderScreen();

		//场景渲染结束
		g_pd3dDevice->EndScene();
	}

	//在屏幕上显示场景
	g_pd3dDevice->Present( NULL, NULL, NULL, NULL );
}


//-----------------------------------------------------------------------------
// Desc: 窗口过程, 处理消息
//-----------------------------------------------------------------------------
LRESULT WINAPI MsgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
	switch( msg )
	{
	case WM_DESTROY:
		Cleanup();
		PostQuitMessage( 0 );
		return 0;
	}

	return DefWindowProc( hWnd, msg, wParam, lParam );
}


//-----------------------------------------------------------------------------
// Desc: 入口函数
//-----------------------------------------------------------------------------
INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR, INT )
{
	//注册窗口类
	WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, 0L, 0L, 
		GetModuleHandle(NULL), NULL, NULL, NULL, NULL,
		L"ClassName", NULL };
	RegisterClassEx( &wc );

	//创建窗口
	HWND hWnd = CreateWindow( L"ClassName", L"图像二值化", 
		WS_OVERLAPPEDWINDOW, 200, 100, WIDTH, HEIGHT,
		GetDesktopWindow(), NULL, wc.hInstance, NULL );

	//初始化Direct3D
	if( SUCCEEDED( InitD3D( hWnd ) ) )
	{ 
		//创建场景图形
		if( SUCCEEDED( InitGeometry() ) )
		{
			//显示窗口
			ShowWindow( hWnd, SW_SHOWDEFAULT );
			UpdateWindow( hWnd );

			//进入消息循环
			MSG msg; 
			ZeroMemory( &msg, sizeof(msg) );
			while( msg.message!=WM_QUIT )
			{
				if( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) )
				{
					TranslateMessage( &msg );
					DispatchMessage( &msg );
				}
				else
				{
					Render();  //渲染场景
				}
			}
		}
	}

	UnregisterClass( L"ClassName", wc.hInstance );
	return 0;
}


Effect代码如下:

/********************************
*  Author: rabbit729
*  E-mail: wlq_729@163.com
*  Date:   2011-09-20
********************************/

//------------------------------
//  顶点着色器
//------------------------------

float viewport_inv_width;
float viewport_inv_height;
struct VS_OUTPUTSCREEN {
   float4 Pos: POSITION;
   float2 texCoord: TEXCOORD0;
};

VS_OUTPUTSCREEN vs_mainPassScreen(float4 Pos: POSITION){
   VS_OUTPUTSCREEN Out;

   Out.Pos = float4(Pos.xy, 0, 1);

   Out.texCoord.x = 0.5 * (1 + Pos.x - viewport_inv_width);
   Out.texCoord.y = 0.5 * (1 - Pos.y - viewport_inv_height);

   return Out;
}

//------------------------------
//  像素着色器
//------------------------------
Texture2D TexScreen;

sampler2D TexMapScreen {
    Texture = <TexScreen>;
};

float4 ps_mainPassScreen(float2 texCoord: TEXCOORD0) : COLOR 
{
   float4 col = tex2D(TexMapScreen,  texCoord);
   float Intensity;

   // 灰度化
   // I = 0.299*R + 0.587*G + 0.184*B
   Intensity = 0.299*col.r + 0.587*col.g + 0.184*col.r;
   
   // 阈值为0.5,关于怎么选取阈值有好多方法,大家可以自行查阅
   if(Intensity > 0.5)
      Intensity = 0.5f;
   else
      Intensity = 0.1f;

   return float4(Intensity.xxx,col.a);
}

technique Screen
{
   pass P0
   {
      VertexShader = compile vs_3_0 vs_mainPassScreen();
      PixelShader  = compile ps_3_0 ps_mainPassScreen();
   }
}


 结果:

原始图片:

二值化后结果:

opencv图像处理常用函数

博文 来自: jacke121
没有更多推荐了,返回首页