图形图像处理
Ibelievesunshine
毕业于浙江师范大学数计学院,是一名图像处理工程师
展开
-
python图像处理库PIL从入门到精通
1. IntroductionPIL(Python Image Library)是python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像处理库了。其官方主页为:PIL。 PIL历史悠久,原来是只支持python2.x的版本的,后来出现了移植到python3的库pillow,pillow号称是friendly fork for PIL,...转载 2020-01-06 15:04:25 · 295 阅读 · 0 评论 -
一篇让你看懂卷积神经网络
初识卷积神经网络(CNN)从今天起,正式开始讲解卷积神经网络。这是一种曾经让我无论如何也无法弄明白的东西,主要是名字就太“高级”了,网上的各种各样的文章来介绍“什么是卷积”尤为让人受不了。听了吴恩达的网课之后,豁然开朗,终于搞明白了这个东西是什么和为什么。我这里大概会用6~7篇文章来讲解CNN并实现一些有趣的应用。看完之后大家应该可以自己动手做一些自己喜欢的事儿了。一、引子————边界...转载 2019-10-30 14:38:02 · 1581 阅读 · 0 评论 -
图像卷积详细解释 常用卷积核解释说明
神经网络中的卷积层,它的原理就来源于图像卷积概述卷积在信号处理领域有极其广泛的应用, 也有严格的物理和数学定义. 本文只讨论卷积在数字图像处理中的应用.在数字图像处理中, 有一种基本的处理方法:线性滤波. 待处理的平面数字图像可被看做一个大矩阵, 图像的每个像素对应着矩阵的每个元素, 假设我们平面的分辨率是1024*768, 那么对应的大矩阵的行数=1024,列数=768.用...转载 2019-10-22 11:33:13 · 15129 阅读 · 0 评论 -
利用matlab自带函数graycoprops 实现基于共生矩阵的遥感图像纹理特征分析
close all;clear all;clc;I = imread('yaogan2.jpg');HSV = rgb2hsv(I);Hgray = rgb2gray(HSV);% 计算64位灰度共生矩阵glcmsl = graycomatrix(Hgray,'numlevels',64,'offset',[0 1;-1 1;-1 0;-1 -1]);% 纹理特征统计,包括对比度、相...原创 2019-08-29 16:01:13 · 1340 阅读 · 4 评论 -
matlab 实现行程编码 对二值图像进行编解码
何为行程压缩呢?很简单:例如:aaabccccccddeee 可以表示为 3a1b6c2d3e行程压缩对二值图像的压缩非常有效close all;clear all;clc;% matlab 行程编解码 二值图像I1 = imread('lena.jpg');I2 = I1(:);I2length = length(I2);I3 = im2bw(I1,0.5); %将原...原创 2019-08-26 21:15:17 · 3706 阅读 · 1 评论 -
香农编码的 matlab 实现
close all;clear all;clc;% 香农编码matlab实现p = [0.5 0.19 0.19 0.07 0.05] %输入概率n = length(p);y = fliplr(sort(p));D = zeros(n,4);D(:,1) = y';for i = 2:n D(1,2) = 0; D(i,2) = D(i-1,1)+D(i-1,2)...原创 2019-08-26 15:50:46 · 8443 阅读 · 1 评论 -
python opencv 利用 GrabCut 算法(opencv已经实现)从图像中分离出前景
# 利用GrabCut算法从图像中分离出前景import numpy as np import cv2 as cv from matplotlib import pyplot as pltimg = cv.imread('meixi.jpg')mask = np.zeros(img.shape[:2],np.uint8)# 用于润色图像的masknewmask = cv.imr...原创 2019-07-21 16:41:08 · 1584 阅读 · 0 评论 -
python opencv 利用分水岭算法实现对物体的分割 图文详细注释版 以分割官网提供的硬币为例
分水岭算法可以实现自动分割多个物体,opencv中 cv.watershed() 函数实现了分水岭算法话不多说,上代码# 利用分水岭算法分离多个相同硬币import numpy as np import cv2 as cv from matplotlib import pyplot as plt# 为了正常显示中文添加以下代码from pylab import * mpl....原创 2019-07-19 11:41:30 · 1780 阅读 · 1 评论 -
opencv 寻找图中的corners 利用自带 Shi-Tomasi Corner Detector 实现
import numpy as np import cv2 as cv from matplotlib import pyplot as pltimg = cv.imread('duomianti.jpg')gray = cv.cvtColor(img,cv.COLOR_BGR2GRAY)corners = cv.goodFeaturesToTrack(gray,17,0.01,1...原创 2019-07-23 20:27:46 · 475 阅读 · 0 评论 -
opencv中很有趣的仿射变换(Affine Transformation)
在仿射变换中,原图中所有平行的行在变换后的图像中仍然平行。为了构建仿射矩阵,我们需要原图中的三个点和它们在变换后的图像中的对应位置。函数 cv.getAffineTransform 创建一个2*3的矩阵传递进 cv.warpAffineimport numpy as np import cv2 as cv from matplotlib import pyplot as pltimg...原创 2019-05-28 15:46:27 · 1695 阅读 · 0 评论 -
官网opencv练习题 最简单的多物体分离技术
题目来源:https://docs.opencv.org/4.1.0/df/d9d/tutorial_py_colorspaces.html 最底部题目:Try to find a way to extract more than one colored objects, for eg, extract red, blue, green objects simultaneously....原创 2019-05-28 10:36:40 · 863 阅读 · 0 评论 -
详解opencv掩膜mask
文章转载自:https://www.cnblogs.com/skyfsm/p/6894685.html在OpenCV中我们经常会遇到一个名字:Mask(掩膜)。很多函数都使用到它,那么这个Mask到底什么呢?一开始我接触到Mask这个东西时,我还真是一头雾水啊,也对无法理解Mask到底有什么用。经过查阅大量资料后,也对Mask有一点自己的理解了,下面就说说我的理解。比如我要对一幅图进行...转载 2019-05-28 09:21:48 · 743 阅读 · 1 评论 -
opencv学习第6课官方练习实现 Create a Paint application with adjustable colors and brush radius using trackbars
练习题目来源(网址最下方):https://docs.opencv.org/4.1.0/d9/dc8/tutorial_py_trackbar.htmlimport numpy as np import cv2 as cv brush_color = [80,80,80]brush_size = 2drawing = False# mouse callback functio...原创 2019-04-17 15:21:15 · 359 阅读 · 0 评论 -
opencv 学习第5课 滑动条实现调色板
# Trackbar as the Color Paletteimport numpy as np import cv2 as cv # When trackbar changed,the bind function does nothingdef nothing(x): pass#Create a black image,a windowimg = np.zeros((300...原创 2019-04-17 11:50:50 · 362 阅读 · 0 评论 -
opencv 学习第4课 将鼠标作为笔刷使用
注意,要使用笔刷的话,需首先按下 m 键将默认模式转变import numpy as np import cv2 as cv drawing = False # true if mouse is pressedmode = True # if True,draw rectangle. Press 'm' to toggle to curveix,iy = -1,-1#mous...原创 2019-04-17 11:07:24 · 637 阅读 · 0 评论 -
matlab 计算灰度图像的一阶矩、二阶矩、三阶矩
一阶矩,定义了每个颜色分量的平均强度 二阶矩,反映待测区域颜色方差,即不均匀性 三阶矩,定义了颜色分量的偏斜度,即颜色的不对称性close all;clear all;clc;J = imread('lena.jpg');K = imadjust(J,[70/255 160/255],[]);figure;subplot(121),imshow(J);sub...原创 2019-08-28 11:35:05 · 10034 阅读 · 3 评论 -
纹理特征描述之灰度差分统计特征(平均值 对比度 熵) 计算和比较两幅纹理图像的灰度差分统计特征 matlab代码实现
灰度差分统计特征有:平均值:对比度:熵:i表示某一灰度值,p(i)表示图像取这一灰度值的概率close all;clear all;clc;% 纹理图像的灰度差分统计特征J = imread('qiang1.jpg');A = double(J);[m,n] = size(A);B = A;C = zeros(m,n);for i=1:m-1 for j...原创 2019-08-28 16:52:16 · 5575 阅读 · 4 评论 -
纹理特征描述之自相关函数法 纹理粗糙性与自相关函数的扩展成正比 matlab代码实现
图像中通常采用自相关函数作为纹理测度自相关函数的定义为:调用自定义函数 zxcor()对砖墙面和大理石面纹理进行分析:自定义函数 zxcor():function [epsilon,eta,C] = zxcor( f,D,m,n )% 自相关函数zxcor(),f为读入的图像数据,D为偏移距离,[m,n]是图像的尺寸数据,返回图像相关函数C的值% epsilon和eta是...原创 2019-08-28 21:31:18 · 3951 阅读 · 4 评论 -
利用matlab自带函数快速提取二值图像的图像边缘 bwperim函数
clear all;close all;clc;I = imread('rice.png');I = im2bw(I);J = bwperim(I); % 提取二值图像图像边缘figure;subplot(121);imshow(I);title('原二值图像');subplot(122);imshow(J);title('图像边缘');其他提取图像边缘的方法:利用膨...原创 2019-09-05 11:50:49 · 2892 阅读 · 0 评论 -
利用膨胀和腐蚀获取图像边缘 matlab实现
关于膨胀和腐蚀的概念请参考:https://blog.csdn.net/Ibelievesunshine/article/details/100522440close all;clear all;clc;I = imread('rice.png');se = strel('square',2);J = imdilate(I,se);K = imerode(I,se);L = ...原创 2019-09-05 11:28:56 · 4587 阅读 · 1 评论 -
imregionalmax imregionalmin imextendedmax imextendedmin imhmax imhmin 函数的详解 matlab中函数
BW = imregionalmax(I): 该函数获得灰度图像 I 的局部极大值,返回值BW为和原图像大小相同的二值图像,BW中元素1对应极大值,其他元素为0BW = imregionalmax(I,conn):该函数中参数conn为连通类型。对于二值图像conn可以取值为4和8,默认值为8。对于三维图像,conn可以取值为6、 18、 26,默认值为26。J = imregionalm...原创 2019-09-05 10:33:05 · 2013 阅读 · 0 评论 -
matlab 简单的图像填充例子
BW = imfill(BW,'holes')该函数通过参数holes可以填充二值图像中的空洞close all;clear all;clc;I = imread('tire.tif');J = imfill(I,'holes'); %图像填充figure;subplot(121);imshow(I);subplot(122);imshow(J);...原创 2019-09-03 21:12:38 · 9140 阅读 · 0 评论 -
简单直观理解形态学中的开运算和闭运算
开运算是先腐蚀,再膨胀。闭运算是先膨胀,再腐蚀。注意上图,开运算去除了图像中比较小的点,闭运算将图中的多个圆变成了一个整体。具体matlab代码如下:close all;clear all;clc;% 开运算和闭运算I = imread('testpic.jpg');I = im2bw(I);I = ~I;se = strel('line',5,90);J = imo...原创 2019-09-03 19:51:12 · 3428 阅读 · 1 评论 -
使用不同的膨胀和腐蚀方法对图像进行处理
膨胀是将与物体接触的所有背景点合并到该物体中,使边界向外部扩张的过程。通过膨胀,可以填充图像中的小孔及在图像边缘处的小凹陷部分。结构元素B对图像A进行膨胀,记作AB腐蚀和膨胀是对偶操作。腐蚀是一种消除边界点,使边界向内部收缩的过程。利用腐蚀操作,可以消除小且无意义的物体。集合A被结构元素B腐蚀,记作AB这里为了简化起见,被膨胀和腐蚀图像我们处理成二值图像:matlab 中膨胀函...原创 2019-09-03 17:06:00 · 2516 阅读 · 0 评论 -
图像欧拉数计算 matlab实现
EUL = C - H其中EUL表示欧拉数 C表示对象数 H表示孔洞数欧拉数常用来识别数字:识别数字 8 ,8 的欧拉数为 -1 ,不同于0,1,2,3,4,5,6,7,9close all;clear all;clc;% 识别数字8I = imread('8.jpg');K = im2bw(I);J = ~K; %图像取反EUL = bweuler(J);fi...原创 2019-09-03 10:49:15 · 5452 阅读 · 0 评论 -
matlab 求二值图像图形的面积和重心
图像如下:代码如下:close all;clear all;clc;I = imread('duobianxing1.jpg');I = im2bw(I);C = bwlabel(I,4);Ar = regionprops(C,'Area')Ce = regionprops(C,'Centroid')figure;imshow(I);output:Ar =...原创 2019-09-02 20:36:51 · 9031 阅读 · 1 评论 -
matlab 提取图像轮廓(图像边缘提取)
利用edge()函数提取图像轮廓,绘制出对象的边界和提取边界坐标信息,matlab实现代码如下:close all;clear all;clc;% 提取图像轮廓,提取图像边缘I = imread('yifu.jpg');c = im2bw(I,graythresh(I));figure;subplot(131);imshow(I);c = flipud(c); %实现矩阵c上...原创 2019-09-01 17:00:06 · 30543 阅读 · 3 评论 -
matlab boundaries和fchcode函数无法执行的解决办法 未定义与 'double' 类型的输入参数相对应的函数 'boundaries'
在测试代码时发现,自己的matlab无法执行Freeman链码函数:boundaries和fchcode函数都无法正常运行:需要在自己的工作目录中添加如下函数:boundaries fchcode minmag codediff代码如下:function B=boundaries(BW,conn,dir)%BOUNDARIES Trace object...原创 2019-08-31 20:08:09 · 3153 阅读 · 0 评论 -
利用Gabor变换法分析纹理图像 matlab代码实现
Gabor变化属于加窗傅里叶变换,Gabor函数可以在频域不同尺度、不同方向上提取相关的特征。Gabor函数与人眼的生物作用相仿,所以经常用于纹理识别上,并取得了较好的效果。二维Gobor滤波函数:其中:xp = x*cos(theta)+y*sin(theta)yp=y*cos(theta)-x*sin(theta)function [ G,gabout ] = gab...原创 2019-08-29 21:55:11 · 5929 阅读 · 4 评论 -
opencv 学习第三课 画线段 圆 椭圆 矩形 多边形 插入文字 代码注释版 保证你每一行都能读懂
import numpy as npimport cv2 as cv# 创建一张大小为512×512,通道数为3的黑色的图片img = np.zeros((512,512,3), np.uint8)# 在图片上从(0,0)到(511,511)画一条颜色为(255,0,0),线宽为5的线段cv.line(img,(0,0),(511,511),(255,0,0),5)# 画一个矩形,左...原创 2019-04-12 21:19:29 · 451 阅读 · 0 评论 -
基于字典的超分辨率实现的各种方法
文章来源:https://www.cnblogs.com/wxl845235800/p/7738953.html简介 这段时间在看基于字典的单帧图像超分辨率重建,本篇主要是对这块做个笔记记录。基本原理预处理 1、准备好用于字典训练的低分辨率图像LR及与之对应的高分辨率图片HR。 2、将低分辨率图像双线性或者三次方插值到高分辨率图像相同大小,得到M...转载 2019-04-10 21:49:10 · 1605 阅读 · 2 评论 -
图像 super-resolution restruction 的各种主流实现方式
文章源地址:https://github.com/huangzehao/Super-Resolution.Benckmark但是从这里最后的Quantitative comparisons可以看出,如果单从传统学习的角度,对于PSNR的提升,可能已经很难超越DL。当然有一些基于重建的方法可能会接近,但是时间消耗太大,只能学术玩玩。A curated list of super-resol...转载 2019-04-10 21:31:38 · 1714 阅读 · 0 评论 -
Java 图片验证码的实现和模拟简单的登录
MainFrame类主要实现了GUI的界面和简单的验证逻辑 package com.applicationimport java.awt.BorderLayout;import java.awt.EventQueue;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import j...原创 2018-12-04 21:45:01 · 755 阅读 · 0 评论 -
Java 一个简单的绘制类似花瓣的程序
绘制椭圆说一下:ellipse = new Ellipse2D.Float(10, 0, 50, 15);// 创建椭圆对象(10,0) 为椭圆外接矩形左上角坐标,50 为外接矩形的长,15为宽package com.wkimport java.awt.Color;import java.awt.Graphics;import java.awt.Graphics2D;...原创 2018-11-27 12:56:50 · 2639 阅读 · 0 评论 -
Java 绘制艺术图案
1. 使用 Graphics2D 类的 translate() 方法,将坐标轴平移到指定点2. 使用 Graphics2D 类的 setColor() 方法,设置颜色3. 使用 Graphics2D 类的 rotate() 方法,旋转绘图上下文4. 使用 Graphics2D 类的 draw() 方法,在指定位置绘制椭圆最终效果如下:package com.wk.imag...原创 2018-11-25 10:59:09 · 994 阅读 · 0 评论 -
Java 为图形填充渐变色
1. 首先在项目中创建一个继承 JFrame 类的 FillGradientFrame 窗体类2. 在 FillGradientFrame 窗体类中,创建内部面板类 FillGradientFrame ,并重写 JComponent 类的 paint() 方法,在该方法中使用 Graphics2D 类的 setPaint() 方法设置封装了渐变色的对象,该对象是通过 GradientPai...原创 2018-11-25 10:19:17 · 4812 阅读 · 4 评论 -
python绘图 条形图 直方图 饼图 箱型图 误差图 多图绘制 图表注释 三维图形
python的主要作图库是Matplotlib,该库提供了较为强大的作图能力。如果您还未安装该库,请命令行运行“pip install matplotlib”安装一下,同时安装“pip install numpy”提供对n维数组对象的支持以支持绘图接下来我们举例分析:1. 绘制线性二维图,折线图:plot(x,y,S)2. 绘制散点图3. 绘制饼形图:pie(size)4. 绘制二维条形直方图:h...原创 2018-04-11 21:05:18 · 1885 阅读 · 0 评论 -
matlab低通滤波
低通滤波器的功能是让低频率通过而滤掉或衰减高频,其作用是过滤掉包含在高频中的噪声。所以低通滤波的效果是图像去噪声平滑增强,但同时也抑制了图像的边界,造成图像不同程度上的模糊。大于大小为M×N的图像,频率点(u,v)与频率中心的距离为D(u,v),其表达式为:1. 理想低通滤波器产生公式为:其中Do为理想低通滤波器的截止频率。理想低通滤波器具有平滑图像的作用,但是有很严重的振铃现象。利用理想低通滤波...原创 2018-04-16 21:02:49 · 46696 阅读 · 8 评论 -
matlab实现直方图均衡化
直方图均衡化是一种利用灰度变换自动调节图像对比度质量的方法,基本思想是通过灰度级的概率密度函数求出灰度变换函数,它是一种以累计分布函数变换法为基础的直方图修正法。直方图均衡化处理的步骤如下:1. 求出给定待处理图像的直方图2. 利用累计分布函数对原图像的统计直方图做变换,得到新的图像灰度。3. 进行近似处理,将新灰度代替旧灰度,同时将灰度值相等或相近的每个灰度直方图合并在一起MATLAB实现直方图...原创 2018-04-16 15:34:34 · 78480 阅读 · 8 评论 -
matlab图像灰度调整——imadjust函数的使用
在MATLAB中,通过函数imadjust()进行图像灰度的调整,该函数调用格式如下:J=imadjust( I ) 对图像I进行灰度调整J=imadjust( I,[low_in;high_in],[low_out;high_out]) [low_in;high_in]为原图像中要变换的灰度范围,[low_out;high_out]为变换后的灰度范围J=imadjust( I,[low_in;...原创 2018-04-16 14:05:03 · 79976 阅读 · 24 评论