图像处理相关项目

2015-12-24 03:49:35 wlkdb 阅读数 4163

一、机器人相扑(2008微软创新杯机器人与算法初赛

 

 

1、环境。

A、圆形擂台。

B、两个扁圆柱形机器人。

 

2、目标。

将对方机器人推出擂台。

 

3、机器人模块。

A、一个只能面向正前方的摄像头。

B、左右两个轮子。

 

4、信息获取。

A、根据摄像头传回图像中边界的弧度确定自己离边界的距离。

B、如果视野中存在对方机器人,根据近大远小来计算出对方机器人的位置,并确定其          姿态(正常还是翻倒)。

C、如果上一刻视野中也存在对方机器人,根据两个时刻对方机器人的位置来确定其行          进方向和速度。

 

5、战术选择。

A、简单粗暴:始终正对准对方机器人,持续对准后速度加到最大来将其撞翻或推出。

B、防御战术:原地高速转圈,对方过来时很容易被撞翻。

C、诱敌战术:在边界上以保持不出界的速度转圈,诱使敌方来撞自己时因速度太快而          出界。

D、避实就虚:发现对方正对着自己撞过来时,与对方运动方向成约135度夹角运动(保       持对方出现在己方摄像头的边界上),从而让对方和自己恰好错开。之后迅速转向            攻击对方的侧方或后方。

 

 

二、机器人火星探险(2008微软创新杯机器人与算法复赛)

 

 

1、环境。

A、火星环境模拟,四周是平地,中间是一个大坑,地表上有些大小不一的石头。

B、一个火星探测车。

 

2、目标。

A、移动到需要采集的石头旁边。

B、控制机器手臂将探针插入石头进行采集。

 

3、探测车模块。

A、前后共三个轮子。

B、车身摄像头和顶部摄像头。

 

4、信息获取。

A、将不同位置摄像头传回的图片进行对比,从而实现三维建模。

B、记录视野中各物体(石头、悬崖)的三维坐标。

 

5、行为模式。

A、根据目标的位置进行寻路,确定最优行进路线。

B、绕过前方的大石头;如果目标不在大坑里,绕过大坑。

C、到达目标点后,选取合适的位置,控制机器臂采集石头(这部分不是我写的,具体          情况完全不了解)。

D、如果要进入大坑,选取坡度最缓的地方下去。

 

 

三、实时脸谱

 

 

1、目标。

A、实时人脸位置识别(对速度和精度要求较高)。

B、在合适大小的脸谱来覆盖人脸,并将图片刷新。

 

2、方法。

A、识别皮肤和头发颜色,以确定大致范围。

B、脸部轮廓和五官识别,以确定精确位置和脸部姿态。

 

 

四、图像素描效果

 

1、方法(效果较粗糙,但程序实现较简练)。

A、用每个点与临近点的灰度值差距来构建新图像。

B、制造斜条纹效果。(就是感觉有斜条纹好看点)

 

2、代码。

publicvoid sumiao()

{

            Bittemp1 = new Bitmap(src.Width, src.Height);                                      //src为原图像

            for (int x = 0; x < src.Width - 3; x++)

                for (int y = 0; y < src.Height - 3; y++)

                               {

                                       int Index = 0;

                                       Color now=src.GetPixel(x, y);

                                        sum=0;

                             t2 = (int)(now.R * 0.299 + now.G * 0.587 + now.B * 0.114);

//当前像素点的灰度值

                                       for(int i=0;i<2;i++)                                                               

                                                for(int j=0;j<2;j++)

//遍历邻近的像素点

                                                 {

                                Color temp = src.GetPixel(x + i, y + j);

                                t1 = (int)(temp.R * 0.299 + temp.G * 0.587 + temp.B * 0.114);

                                                         if (Math.Abs(t1-t2)>sum)

                                                                   sum=Math.Abs(t1-t2);                            

//获取当前像素点与邻近像素点灰度值之差的最大值

                                                          Index++;

                                                      }

                                        sum*=5/2;

                                       if ((x+y)%3==0)

sum+=(100-t2)*2/3;

//制造斜条纹效果

                                        sum=sum>150? 150:sum;

                                        sum=sum<0? 0:sum;

//维护边界

                                        Bittemp1.SetPixel(x, y,Color.FromArgb(255-sum, 255-sum, 255-sum));

//修改新图像

                               }

            pictureBox1.Image = Bittemp1;

   //保存新图像

}

 

3、效果。

 

 

五、图像渐变合并

 

1、方法(简单好玩的一个小玩意)。

将两个图形横向渐变合并。

 

2、效果。

  

 

 

六、图像加密

 

1、混沌加密。

用密码作为信号的初始值,利用混沌微分方程产生一系列整数,然后用它们依次和图像中像素点的RGB值进行异或(XOR)运算,最后得到一幅杂乱无章的图像。解密时采取同样的步骤,只需保证产生信号的初始值相同即可(即密码正确),因为异或运算是可逆的。

思路很简单,但这背后的原理却极为鲜明的体现了混沌的特点。首先:混沌是一个确定性系统,只要所有的初始值完全相同,那么后续的衍化也会一模一样,这是我们可以成功解密的原因。其次,我们还利用了混沌系统对初始条件的敏感性。假如一幅图像混沌加密的密码是2012,那么哪怕解密时输入2013,得到图像还是杂乱无章的,让解密者无法知道正确的密码离2013其实很接近了。

 

混沌方程:

PrivateSub go()

        u3 = u1 + (u2 - u1) * dt / (mima * c1) - ((-0.00041) * u1 + (1 / 2) * (-0.00035) * (Math.Abs(u1 + 1) -                     Math.Abs(u1 - 1))) * dt / c1

        u4 = u2 + (u1 - u2) * dt / (mima * c2) + i * dt / c2

        i2 = i - u2 * dt / l - r * i * dt / l

        u1 = u3 Mod 256

        u2 = u4 Mod 256

        i = i2 Mod 256

    EndSub

 

 

2、随机交换加密。

首先剔除图像中一些像素点的信息,得到一些空余的空间,并把剩下像素点的位置信息(第几行第几列)存在这些空余的空间中。接着随机交换所有像素点,然后用输入的密码和对每个点都生成的随机数来对各个像素点信息进行异或运算,并把这些产生的随机数也存入到图片剩余的空间中。

这种方法看起来也能达到混沌加密的效果,但需要浪费3/4的像素信息。

 

核心代码:

 Dim openFileAs OpenFileDialog

        openFile = New OpenFileDialog()

        openFile.Filter = "图像文件|*.jpg"

        If (openFile.ShowDialog() <> Windows.Forms.DialogResult.OK)Or (openFile.FileName ="") Then

            Return

        EndIf

        Dim tStringAsString

        tString = InputBox("请输入密码", ,"0")

        Dim mimaAsLong

        ForEach tChrAs Char In tString

            mima = (mima + Asc(tChr))Mod 256

        Next

 

        Dim openImageAs Bitmap

        openImage = Bitmap.FromFile(openFile.FileName)

 

        Dim newImageAs Bitmap

        newImage = New Bitmap(openImage.Width * 2, openImage.Height * 2)

 

        Randomize()

        Dim nowX, nowY, newX, newY, c(5)AsInteger

 

        Dim mAsInteger

        m = 73

        For iAsInteger = 0 To openImage.Width - 1

            For j As Integer = 0To openImage.Height - 1

                nowX = i

                nowY = j

                c(1) = openImage.GetPixel(nowX, nowY).R

                c(3) = openImage.GetPixel(nowX, nowY).G

                c(4) = openImage.GetPixel(nowX, nowY).B

                For k As Integer = 1To 4

                    If k = 2 Then

                        Continue For

                    End If

                    newImage.SetPixel(i * 2 + kMod 2, j * 2 + kMod 3, Color.FromArgb(i, j, c(k)))

                Next

            Next

        Next

 

        For iAsInteger = 0 To newImage.Width \ 2 - 1

            For j As Integer = 0To newImage.Height \ 2 - 1

                For k As Integer = 1To 4

                    If k = 2 Then

                        Continue For

                    End If

                    nowX = i * 2 + kMod 2

                    nowY = j * 2 + kMod 3

                    newX = (CInt(Rnd() * (newImage.Width \ 2 - 1))Mod 256) * 2 + kMod 2

                    newY = (CInt(Rnd() * (newImage.Height \ 2 - 1))Mod 256) * 2 + kMod 3

                    c(1) = newImage.GetPixel(newX, newY).R

                    c(3) = newImage.GetPixel(newX, newY).G

                    c(4) = newImage.GetPixel(newX, newY).B

                    newImage.SetPixel(newX, newY, Color.FromArgb(newImage.GetPixel(nowX, nowY).R, newImage.GetPixel(nowX, nowY).G, newImage.GetPixel(nowX, nowY).B))

                    newImage.SetPixel(nowX, nowY, Color.FromArgb(c(1), c(3), c(4)))

                Next

            Next

        Next

 

        For iAsInteger = 0 To newImage.Width / 2 - 1

            For jAsInteger = 0 To newImage.Height / 2 - 1

                nowX = i * 2

                nowY = j * 2

                newImage.SetPixel(nowX, nowY, Color.FromArgb(CInt(Rnd() * 255),CInt(Rnd() * 255),CInt(Rnd() * 255)))

                c(1) = newImage.GetPixel(nowX, nowY).R

                c(3) = newImage.GetPixel(nowX, nowY).GXor mima

                c(4) = newImage.GetPixel(nowX, nowY).B

 

                For k As Integer = 1To 4

                    If k = 2 Then

                        Continue For

                    End If

                    nowX = i * 2 + kMod 2

                    nowY = j * 2 + kMod 3

                    If c(k) Mod 4 = 1 Then

                        newImage.SetPixel(nowX, nowY, Color.FromArgb(newImage.GetPixel(nowX, nowY).RXor c(k)Xor mima, newImage.GetPixel(nowX, nowY).G, newImage.GetPixel(nowX, nowY).B))

                    ElseIf c(k) Mod 4 = 2 Then

                        newImage.SetPixel(nowX, nowY, Color.FromArgb(newImage.GetPixel(nowX, nowY).R, newImage.GetPixel(nowX, nowY).GXor c(k)Xor mima, newImage.GetPixel(nowX, nowY).B))

                    ElseIf c(k) Mod 4 = 3 Then

                        newImage.SetPixel(nowX, nowY, Color.FromArgb(newImage.GetPixel(nowX, nowY).R, newImage.GetPixel(nowX, nowY).G, newImage.GetPixel(nowX, nowY).BXor c(k)Xor mima))

                    End If

                Next

            Next

        Next

 

        Dim saveFileAs SaveFileDialog

        saveFile = New SaveFileDialog()

        saveFile.Filter = "图像文件|*.jpg"

        If (saveFile.ShowDialog() <> Windows.Forms.DialogResult.OK)Or (openFile.FileName ="") Then

            Return

        EndIf

        newImage.Save(saveFile.FileName)

 

 

 

2019-05-15 21:11:51 weixin_43942658 阅读数 514

转载:https://blog.csdn.net/c2a2o2/article/details/77701181
https://blog.csdn.net/qq_24753293/article/details/79866387
包含了多种关于图像处理方面的项目,都有全面的代码,便于大家查阅使用。

1.1 图像生成

1.1.1 绘画风格到图片的转换:Neural Style
1.1.2 图像类比转换:image-analogies
1.1.3 根据涂鸦生成图片:Neural Doodle
1.1.4 匹根据涂鸦类比图片:Sketchy
1.1.5 根据图片生成铅笔画:Pencil
1.1.6 手写文字模拟:rnnlib
1.1.7 转换风景图片:Transient Attributes for High-Level Understanding and Editing of Outdoor Scenes
1.1.8 图片变Emojis表情:What emojis will the Emojini 3000 grant your photos?
1.1.9 增加图片分辨率:srez
1.1.10 图片自动上色:Colornet
1.1.11 生成可爱的动漫头像:AnimeGAN
1.1.12 骡子变斑马:CycleGAN and pix2pix in PyTorch
1.1.13 强大的图像生成器:DiscoGAN in PyTorch
1.1.14 使用RNN生成手写数字:DRAW implmentation
1.1.15 使用CNN来放大图片:waifu2x

1.2 看图说话

1.2.1 根据图片生成一段描述:Show and Tell
1.2.2 根据图片讲故事:neural-storyteller
1.2.3 根据图片将故事2:NeuralTalk2
1.2.4 识别图片中的文字:CRNN for image-based sequence recognition

1.3 图像识别

1.3.1 用于物体识别的全卷积网络:PyTorch-FCN
1.3.2 引入注意力的卷积网络:Attention Transfer
1.3.3 物体识别实例:Deep-Learning
1.3.4 物体识别API:Tensorflow Object Detection API
1.3.5 推理场景结构:SfMLearner
1.3.6 用于分辨色情图像的open_nsfw
1.3.7 人脸识别:Open Face
1.3.8 易用人脸识别:Face_recognition
1.3.9 快速人脸识别:MobileID
1.3.10 图像识别框架1:AlexNet & VGG Net & GoogleNet & ResNet
1.3.11 图像识别框架2:ResNeXt & RCNN & YOLO & SqueezeNet & SegNet
1.3.12 预训练的图像识别模型:functional-zoo
1.3.13 预定义的CNN过滤器: PyScatWave
1.3.14 计算图片中物体的相似度:Conditional Similarity Networks (CSNs)
1.3.15 量子化学中的神经信息传递(・_・;Neural Message Passing for Quantum Chemistry

1.4 图像理解

1.4.1 Visual Question Answering in Pytorch
1.4.2 Facebook看图答题:Clevr-IEP

图像生成

绘画风格到图片的转换:Neural Style
https://github.com/jcjohnson/neural-style

这个项目是用 Torch 对 Leon A. Gatys, Alexander S. Ecker, 和 Matthias Bethge 等人的论文“A Neural Algorithm of Artistic Style”的一个实现。论文中提出一种算法,用卷积神经网络将一幅图像的内容与另一幅图像的风格进行组合。

图像类比转换:image-analogies
https://github.com/awentzonline/image-analogies

“神经图像类比”(neural image analogies)这个项目基本上是 A. Hertzmann et. al(2001)的论文“Image Analogies”的一个实现。在这个项目中,我们使用了 VGG16 的特征,利用 Chuan Li, Michael Wand (2016) 的论文“Combining Markov Random Fields and Convolutional Neural Networks for Image Synthesis”中描述的方法进行patch的匹配和混合。初始代码改编自 Keras 的“神经风格迁移”示例。

根据涂鸦生成图片:Neural Doodle
https://github.com/alexjc/neural-doodle

使用深度神经网络把你的二流涂鸦变成艺术一般的作品!这个项目是 Champandard(2016)的论文 “Semantic Style Transfer and Turning Two-Bit Doodles into Fine Artworks”的一个实现,基于 Chuan Li 和 Michael Wand(2016)在论文“Combining Markov Random Fields and Convolutional Neural Networks for Image Synthesis”中提出的 Neural Patches 算法。

匹根据涂鸦类比图片:Sketchy
https://github.com/janesjanes/sketchy

这个项目可以根据用户手绘的涂鸦,匹配出类似的图片。

根据图片生成铅笔画:Pencil
https://github.com/fumin/pencil

把一副图像变成铅笔水粉画。

手写文字模拟:rnnlib
https://github.com/szcom/rnnlib

这个项目可以做到手写文字模拟。

转换风景图片:Transient Attributes for High-Level Understanding and Editing of Outdoor Scenes
http://transattr.cs.brown.edu

这个项目可以识别和理解图片中的风景,并且可以根据用户提出的条件,定向改变原风景画中的环境(比如more night)

图片变Emojis表情:What emojis will the Emojini 3000 grant your photos?
http://engineering.curalate.com/2016/01/20/emojinet.html

将用户提供的图片转化成相关的表情图标

增加图片分辨率:srez
https://github.com/david-gpu/srez

srez(super-resolution through deep learning),即通过深度学习实现图像超分辨率。这个项目是利用深度学习将 16x16 的图像分辨率增加 4 倍,基于用来训练神经网络的数据集,所得到的图像具有鲜明的特征。

图片自动上色:Colornet
https://github.com/pavelgonchar/colornet

Colornet 是一个给灰度图像自动上色的神经网络。

生成可爱的动漫头像:AnimeGAN
https://github.com/jayleicn/animeGAN

使用PyTorch实现的GAN,可以自定义生成漂亮的动漫妹子头像,附带训练数据集哦!

骡子变斑马:CycleGAN and pix2pix in PyTorch
https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix.git

图到图的翻译,著名的 CycleGAN 以及 pix2pix 的PyTorch 实现。

强大的图像生成器:DiscoGAN in PyTorch
https://github.com/carpedm20/DiscoGAN-pytorch.git

《Learning to Discover Cross-Domain Relations with Generative Adversarial Networks》的 PyTorch 实现。

使用RNN生成手写数字:DRAW implmentation
https://github.com/skaae/lasagne-draw

使用RNN生成手写体数字。

使用CNN来放大图片:waifu2x
https://github.com/nagadomi/waifu2x

使用CNN来放大图片,与普通图片放大不同的是,使用CNN“生成”放大,使低分辨率的图片在放大后也不会出现像素锯齿。

看图说话

根据图片生成一段描述:Show and Tell
https://github.com/tensorflow/models/tree/master/im2txt

这是 Oriol Vinyals et. al.(2016)的论文“Show and Tell: Lessons learned from the 2015 MSCOCO Image Captioning Challenge”的用TensorFlow实现的 image-to-text 图片说明生成模型。

根据图片讲故事:neural-storyteller
https://github.com/ryankiros/neural-storyteller

Neural-storyteller 是一个能够根据图像内容生成一个小故事的循环神经网络。这个 GitHub 库里包含了使用任意图像生成故事的代码,以及用于训练新模型的说明。

根据图片将故事2:NeuralTalk2
https://github.com/karpathy/neuraltalk2

循环神经网络(RNN)可以用于给图像取标题。NeuralTalk2 比原始版本的 NeuralTalk 更快而且性能更好。与原来的 NeuralTalk 相比,NeuralTalk2 的实现是批量的,可以使用 Torch 在 GPU上运行,并且支持 CNN 微调。这些都使得语言模型(~100x)的训练速度大大加快,但由于我们还有一个 VGGNet,因此总体上的提升没有很多。但是这仍然是个好模型,可以在 2~3 天里训练好,而且表现出的性能非常好。

识别图片中的文字:CRNN for image-based sequence recognition
https://github.com/bgshih/crnn.git

这个是 Convolutional Recurrent Neural Network (CRNN) 的 PyTorch 实现。CRNN 由一些CNN,RNN和CTC组成,常用于基于图像的序列识别任务,例如场景文本识别和OCR。

图像识别

用于物体识别的全卷积网络:PyTorch-FCN
https://github.com/wkentaro/pytorch-fcn.git

一个性能出众的物体识别全卷积神经网络,使用PyTorch实现。

引入注意力的卷积网络:Attention Transfer
https://github.com/szagoruyko/attention-transfer.git

论文 “Paying More Attention to Attention: Improving the Performance of Convolutional Neural Networks via Attention Transfer” 的PyTorch实现。

物体识别实例:Deep-Learning
https://github.com/priya-dwivedi/Deep-Learning/blob/master/Object_Detection_Tensorflow_API.ipynb

一个基于Ipython Notebook的物体识别实例,使用了Tensorflow Object Dectection API

物体识别API:Tensorflow Object Detection API
https://github.com/tensorflow/models/tree/master/object_detection

Google Tensorflow Object Dectection API 的开源代码。

推理场景结构:SfMLearner
https://github.com/tinghuiz/SfMLearner

用单张图片推理场景结构:UC Berkeley提出3D景深联合学习方法

用于分辨色情图像的open_nsfw
https://github.com/yahoo/open_nsfw

这是雅虎构建的用于检测图片是否包含不适宜工作场所(NSFW)内容的深度神经网络项目,GitHub 库中包含了网络的 Caffe 模型的代码。检测具有攻击性或成人内容的图像是研究人员进行了几十年的一个难题。随着计算机视觉技术和深度学习的发展,算法已经成熟,雅虎的这个模型能以更高的精度分辨色情图像。 由于 NSFW 界定其实是很主观的,有的人反感的东西可能其他人并不觉得如何。雅虎的这个深度神经网络只关注NSFW内容的一种类型,即色情图片,所以该模型不适用于检测素描、文字、动画、暴力图片等内容。

人脸识别:Open Face
https://github.com/cmusatyalab/openface

OpenFace 是一个使用深度神经网络,用 Python 和 Torch 实现人脸识别的项目。神经网络模型基于 Google Florian Schroff 等人的 CVPR 2015 论文“FaceNet: A Unified Embedding for Face Recognition and Clustering” ,Torch 让网络可以在 CPU 或 CUDA 上运行。

易用人脸识别:Face_recognition
https://github.com/ageitgey/face_recognition#face-recognition

这也提供了一个简单的 face_recognition 命令行工具,你可以打开命令行中任意图像文件夹,进行人脸识别!

快速人脸识别:MobileID
https://github.com/liuziwei7/mobile-id

据说是个超级快速的人脸识别程序,可以用在手机上

图像识别框架1:AlexNet & VGG Net & GoogleNet & ResNet
AlexNet

https://gist.github.com/JBed/c2fb3ce8ed299f197eff

VGG Ne

https://github.com/fchollet/keras/blob/master/keras/applications/vgg16.py

GoogleNet

https://github.com/fchollet/keras/blob/master/keras/applications/inception_v3.py

ResNet

https://github.com/fchollet/keras/blob/master/keras/applications/resnet50.py

图像识别框架2:ResNeXt & RCNN & YOLO & SqueezeNet & SegNet
ResNeXt

https://github.com/titu1994/Keras-ResNeXt

RCNN (基于区域的 CNN)

https://github.com/yhenon/keras-frcnn

YOLO (You Only Look once)

https://github.com/allanzelener/YAD2K

SqueezeNet

https://github.com/rcmalli/keras-squeezenet

SegNet

https://github.com/imlab-uiip/keras-segnet

预训练的图像识别模型:functional-zoo
https://github.com/szagoruyko/functional-zoo.git

由PyTorch和Tensorflow实现的常用图像识别模型包含预训练参数。

预定义的CNN过滤器: PyScatWave
https://github.com/edouardoyallon/pyscatwave

一套预定义的filter,用于增强图像识别的效果。

计算图片中物体的相似度:Conditional Similarity Networks (CSNs)
https://github.com/andreasveit/conditional-similarity-networks.git

《Conditional Similarity Networks》的PyTorch实现,可以根据不同的条件计算图片中物体的相似度。

量子化学中的神经信息传递(・_・;Neural Message Passing for Quantum Chemistry
https://github.com/priba/nmp_qc.git

论文《Neural Message Passing for Quantum Chemistry》的PyTorch实现,讲的是量子化学里的神经信息传递!听起来碉堡了。

图像理解

Visual Question Answering in Pytorch
https://github.com/Cadene/vqa.pytorch.git

一个PyTorch实现的优秀视觉推理问答系统,是基于论文《MUTAN: Multimodal Tucker Fusion for Visual Question Answering》实现的。项目中有详细的配置使用方法说明。

Facebook看图答题:Clevr-IEP
https://github.com/facebookresearch/clevr-iep.git

Facebook Research 论文《Inferring and Executing Programs for Visual Reasoning》的PyTorch实现,讲的是一个可以基于图片进行关系推理问答的网络。

2018-06-28 18:56:09 Julialove102123 阅读数 2644

深度学习项目图像处理领域的代码链接。

图像识别,图像生成,看图说话等等方向的代码;


图像生成

绘画风格到图片的转换:Neural Style: https://github.com/jcjohnson/neural-style

图像类比转换:image-analogies :https://github.com/awentzonline/image-analogies

根据涂鸦生成图片:Neural Doodle :https://github.com/alexjc/neural-doodle

根据涂鸦类比图片:Sketchy:https://github.com/janesjanes/sketchy

根据图片生成铅笔画:Pencil:https://github.com/fumin/pencil

把一副图像变成铅笔水粉画。

手写文字模拟:rnnlib :https://github.com/szcom/rnnlib

转换风景图片:http://transattr.cs.brown.edu

这个项目可以识别和理解图片中的风景,并且可以根据用户提出的条件,定向改变原风景画中的环境(比如more night)

图片变Emojis表情:http://engineering.curalate.com/2016/01/20/emojinet.html

增加图片分辨率:srez:https://github.com/david-gpu/srez

图片自动上色:Colornet :https://github.com/pavelgonchar/colornet

生成可爱的动漫头像:AnimeGAN :https://github.com/jayleicn/animeGAN

骡子变斑马:CycleGAN and pix2pix in PyTorch :https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix.git

强大的图像生成器:DiscoGAN in PyTorch :https://github.com/carpedm20/DiscoGAN-pytorch.git

使用RNN生成手写数字:DRAW implmentation :https://github.com/skaae/lasagne-draw

使用CNN来放大图片:waifu2x :https://github.com/nagadomi/waifu2x

根据图片生成一段描述:Show and Tell :https://github.com/tensorflow/models/tree/master/im2txt

根据图片讲故事:neural-storyteller :https://github.com/ryankiros/neural-storyteller

根据图片将故事2:NeuralTalk2:https://github.com/karpathy/neuraltalk2

识别图片中的文字:CRNN for image-based sequence recognition:https://github.com/bgshih/crnn.git

图像识别

用于物体识别的全卷积网络:PyTorch-FCN:https://github.com/wkentaro/pytorch-fcn.git

引入注意力的卷积网络:Attention Transfer:https://github.com/szagoruyko/attention-transfer.git

物体识别实例:Deep-Learning:

https://github.com/priya-dwivedi/Deep-Learning/blob/master/Object_Detection_Tensorflow_API.ipynb

物体识别API:Tensorflow Object Detection API:https://github.com/tensorflow/models/tree/master/object_detection

推理场景结构:SfMLearner :https://github.com/tinghuiz/SfMLearner

用于分辨色情图像的open_nsfw :https://github.com/yahoo/open_nsfw

人脸识别:Open Face :https://github.com/cmusatyalab/openface

易用人脸识别:Face_recognition : https://github.com/ageitgey/face_recognition#face-recognition

快速人脸识别:MobileID:https://github.com/liuziwei7/mobile-id

图像识别框架1:AlexNet & VGG Net & GoogleNet & ResNet

AlexNet

https://gist.github.com/JBed/c2fb3ce8ed299f197eff

VGG Ne

https://github.com/fchollet/keras/blob/master/keras/applications/vgg16.py

GoogleNet

https://github.com/fchollet/keras/blob/master/keras/applications/inception_v3.py

ResNet

https://github.com/fchollet/keras/blob/master/keras/applications/resnet50.py

图像识别框架2:ResNeXt & RCNN & YOLO & SqueezeNet & SegNet

ResNeXt

https://github.com/titu1994/Keras-ResNeXt

RCNN (基于区域的 CNN)

https://github.com/yhenon/keras-frcnn

YOLO (You Only Look once)

https://github.com/allanzelener/YAD2K

SqueezeNet

https://github.com/rcmalli/keras-squeezenet

SegNet

https://github.com/imlab-uiip/keras-segnet

预训练的图像识别模型:functional-zoo

https://github.com/szagoruyko/functional-zoo.git

由PyTorch和Tensorflow实现的常用图像识别模型包含预训练参数。

预定义的CNN过滤器: PyScatWave

https://github.com/edouardoyallon/pyscatwave

一套预定义的filter,用于增强图像识别的效果。

计算图片中物体的相似度:Conditional Similarity Networks (CSNs)

https://github.com/andreasveit/conditional-similarity-networks.git

《Conditional Similarity Networks》的PyTorch实现,可以根据不同的条件计算图片中物体的相似度。

量子化学中的神经信息传递(・_・;Neural Message Passing for Quantum Chemistry

https://github.com/priba/nmp_qc.git

论文《Neural Message Passing for Quantum Chemistry》的PyTorch实现,讲的是量子化学里的神经信息传递!听起来碉堡了。

图像理解

Visual Question Answering in Pytorch

https://github.com/Cadene/vqa.pytorch.git

一个PyTorch实现的优秀视觉推理问答系统,是基于论文《MUTAN: Multimodal Tucker Fusion for Visual Question Answering》实现的。项目中有详细的配置使用方法说明。

Facebook看图答题:Clevr-IEP

https://github.com/facebookresearch/clevr-iep.git

Facebook Research 论文《Inferring and Executing Programs for Visual Reasoning》的PyTorch实现,讲的是一个可以基于图片进行关系推理问答的网络。

2019-03-13 16:29:33 weixin_43839485 阅读数 308

数字图像处理项目记录1

3月9日:lecture1

Matlab图形处理函数

imread函数
Matlab文档解释
size函数
Matlab文档解释
imadjust函数(灰度变换函数)f1=imadjust(f,[low_in high_in],[low_out high_out],gamma)
网上说明
Matlab文档解释

imresize函数
Matlab文档解释
imshowpair函数
imshowpair函数就是指以成双成对的形式显示图片,其中一个重要的参数就是‘method’,他有4个选择
(1)‘falsecolor’ 字面意思理解就是伪彩色的意思,其实就是把两幅图像的差异用色彩来表示,这个是默认的参数。
(2)‘blend’ 这是一种混合透明处理类型,技术文档的翻译是alpha blending,大家自己理解吧。
(3)‘diff’ 这是用灰度信息来表示亮度图像之间的差异,这是对应‘falsecolor’的一种方式。
(4)参数‘montage’可以理解成‘蒙太奇’,这是一种视频剪辑的艺术手法,其实在这里我们理解成拼接的方法就可以了。
https://blog.csdn.net/ch_fei/article/details/6450372

imcomplement函数
J = imcomplement(I) computes the complement of the image I and returns the result in J.
Matlab文档解释

mat2gray函数(归一化,小于amin的化0,大于amax的化1)I = mat2gray(A,[amin amax]) I = mat2gray(A)
Matlab文档解释
网上说明

im2double函数,将[0,255]映射到[0,1]
网上说明

im2uint8函数J = im2uint8(I) J = im2uint8(I,'indexed')
把图像数据类型转换为无符号八位整型。如果输入图像是无符号八位整型的,返回的图像和
源图像相同。如果源图像不是无符号八位整型的,该函数将返回和源图像相同但数据类型为uint8的图像(必要时对图像进行调整)

J = im2uint8(I) converts the grayscale, RGB, or binary image I to
uint8, rescaling or offsetting the data as necessary.

If the input image is of class uint8, then the output image is
identical. If the input image is of class logical, then im2uint8
changes true-valued elements to 255.

You optionally can perform the conversion using a GPU (requires
Parallel Computing Toolbox™). For more information, see Image
Processing on a GPU.

J = im2uint8(I,‘indexed’) converts the indexed image I to uint8,
offsetting the data if necessary.
将索引图像I转换为uint8,
必要时抵消数据。

Matlab文档解释

对数变换
对数与对比度拉伸变换是进行动态范围处理的基本工具,对数变换通过表达式:g=c*log(1+double(f))实现。

对数变换的一项主要应用是压缩动态范围,如gs=im2uint8(mat2gray(g));

2015-12-23 22:57:00 weixin_34159110 阅读数 510

【项目实战派】图像处理项目的硬件平台选型

一直以来我都对嵌入式系统比较感兴趣,因为感到图像处理最终还是要走向便携式、移动化的。这里讲自己对图像处理项目的硬件平台选型这块的想法进行交流,欢迎交流、批评。
一、典型图像处理系统构建
 ①相机与镜头——这部分属于成像器件,通常的视觉系统都是由一套或者多套这样的成像系统组成,如果有多路相机,可能由图像卡切换来获取图像数据,也可能由同步控制同时获取多相机通道的数据。根据应用的需要相机可能是输出标准的单色视频(RS-170/CCIR)、复合信号(Y/C)、RGB信号,也可能是非标准的逐行扫描信号、线扫描信号、高分辨率信号等。 
②光源——作为辅助成像器件,对成像质量的好坏往往能起到至关重要的作用,各种形状的LED灯、高频荧光灯、光纤卤素灯等都容易得到。  
③传感器——通常以光纤开关、接近开关等的形式出现,用以判断被测对象的位置和状态,告知图像传感器进行正确的采集。 
④图像采集卡——通常以插入卡的形式安装在PC中,图像采集卡的主要工作是把相机输出的图像输送给电脑主机。它将来自相机的模拟或数字信号转换成一定格式的图像数据流,同时它可以控制相机的一些参数,比如触发信号,曝光/积分时间,快门速度等。图像采集卡通常有不同的硬件结构以针对不同类型的相机,同时也有不同的总线形式,比如PCI、PCI64、Compact PCI,PC104,ISA等。
⑤PC平台——电脑是一个PC式视觉系统的核心,在这里完成图像数据的处理和绝大部分的控制逻辑,对于检测类型的应用,通常都需要较高频率的CPU,这样可以减少处理的时间。同时,为了减少工业现场电磁、振动、灰尘、温度等的干扰,必须选择工业级的电脑。  ⑥视觉处理软件——机器视觉软件用来完成输入的图像数据的处理,然后通过一定的运算得出结果,这个输出的结果可能是PASS/FAIL信号、坐标位置、字符串等。常见的机器视觉软件以C/C++图像库,ActiveX控件,图形式编程环境等形式出现,可以是专用功能的(比如仅仅用于LCD检测,BGA检测,模版对准等),也可以是通用目的的(包括定位、测量、条码/字符识别、斑点检测等)。
⑦控制单元(包含I/O、运动控制、电平转化单元等)——一旦视觉软件完成图像分析(除非仅用于监控),紧接着需要和外部单元进行通信以完成对生产过程的控制。简单的控制可以直接利用部分图像采集卡自带的I/O,相对复杂的逻辑/运动控制则必须依靠附加可编程逻辑控制单元/运动控制卡来实现必要的动作。
二、图像处理项目的硬件平台选型
常见的图像硬件平台和工具链包括
1、pc+mfc+opencv(或类似的商用软件);
2、arm+qt+opencv(或类似软件);
3、dsp+专用算法库;
4、fpga+专用算法库;
值得注意的一点是,opencv作为比较著名的开源算法库,在dsp和fpga(http://ec.eepw.com.cn/center/shownews/userid/38503/id/160095)上面都有移植的实现。
同时,android作为arm的分枝,随着手机已经成为人们日常生活中不可缺少的一个部分,所以手机方面的图像识别程序/应用程序有着非常巨大的竞争力,ios也是类似的
从价格上来说
x86工控机只需要几百元,小一千的价格就可以得到一个完整的电脑
dsp和fpga开发板,如果要能够用于图像处理的价格一般都比较贵,至少上千元。
三、小结
       最终的选择,还是应该根据项目的需要选择平台。所有的硬件最终都是支持需求实现的。对于图像处理来说,一般具有
1、主要功能单一,也就是说不需要丰富的控制资源;
2、算法复杂程度高;
3、实时性有一定程度的要求。
所以,我认为一般来说,选用x86工控机+mfc+opencv或者qt+opencv的形式应该就能够解决许多问题。基于这个平台进行做工作,选择出稳定的方便扩展的平台,能够支持许多未来的工作。





图像处理入门教程

阅读数 32633