![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
图像处理
图像处理的若干算法总结
lzm88123
记学习心得
展开
-
(3)pytorch 预训练模型与微调
预训练当我们想做一个图像分类任务时,我们可以选择别人已经训练好的模型,在它的基础上进行训练。一般地,我们初始化训练一个网络时,会初始化网络参数(随机的),然后不断训练使网络的损失越来越小。过程是没问题的,但是对于一个大型数据集来说,训练一个模型并使它达到较小的损失是一个漫长的过程。因此我们可以在结果很满意的时候保存训练模型的参数,以便下次在训练的时候可以直接在该模型的基础上开始。这个过程就叫预训练。微调用预训练型和自己的数据进行训练,使得参数适应自己的数据,这样一个过程称之为微调。微调可大概分为3种情原创 2021-10-09 21:38:46 · 4872 阅读 · 0 评论 -
(2)pytorch 实现图片分类(多种模型对比)
按照计划,学习深度学习的第一步是对minist数据集进行分类,选取的网络也是比较简单的网络,主要是为了大概理解一个深度学习网络的框架是怎么样的以及如何从零开始做一深度学习项目。在第一步的基础上,接下来就是需要处理更大难度的数据集以及选取复杂度更大的网络模型。一、数据集这里选择了torchvision.datasets中的CIFAR10数据集,该数据集是torchvision自带的数据集之一,包含了10个类别共10000张图片。数据的加载和使用: transforms = torchvision原创 2021-10-08 20:50:00 · 3020 阅读 · 0 评论 -
(0)深度学习项目入门(pytorch)
想入门深度学习,感觉无从下手,怎么办?除了理论上的学习之外,最快速的方法就是做项目:包括但不限于别人已经做好的项目,导师布置的项目作业,自己接到的项目。做项目的方法是模仿,也就是抄。抄别人的项目,再自己总结:1.这个模块的作用是什么2.这个模块有哪些重要的类和函数3.这些重要的类和函数在哪里调用的,作用是什么4.数据输入输出的格式,为什么要这么用。从mnist分类开始,到经典的RCNN或者YOLO。抄完一遍基本上已经算是能够自己完成一些小项目了。剩下的就是思考怎么涨点的问题了。项目做多了就会发现原创 2021-10-07 16:02:04 · 979 阅读 · 0 评论 -
(1)pytorch 实现 minist手写数据集(cpu/gpu)版本
minist手写文字数据集是深度学习/机器学习的入门集数据集。通过搭建深度神经网络的方法对minist数据集进行训练和预测,可以对整个深度学习的框架做一个大概的了解。cpu 版本,即数据和模型都在cpu(内存)上训练,不需要调用gpu。# 训练+测试import torchimport torch.nn as nnimport torch.utils.data as Dataimport torchvisionimport matplotlib.pyplot as pltimport o原创 2021-10-07 11:26:26 · 2156 阅读 · 1 评论 -
python 轮廓检测 最小外接矩形
def shapeDetect(img): contours,hierarchy=cv2.findContours(img,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)#寻找封闭区域 cv2.drawContours(img,contours,-1,(0,0,255),3) maxCnt=-1 for i in range(len(contours)): rect = cv2.minAreaRect(contours[i])原创 2020-07-02 13:58:31 · 1966 阅读 · 0 评论 -
python 图像的旋转与仿射变换
python代码实现,需要输入原图片和旋转角度。def rotate(img, angle):#输入原图片和需要旋转的角度 # 旋转图片 (h, w) = img.shape[:2] # 获得图片高,宽 center = (w // 2, h // 2) # 获得图片中心点 img_ratete = cv2.getRotationMatrix2D(center, angle, 1) #求旋转图片 rotated = cv2.warpAffine(img,原创 2020-07-01 23:25:25 · 543 阅读 · 0 评论 -
python 图像分割方法总结
图像分割是一种常用的图像处理方法,可分为传统方法和深度学习的方法。深度学习的方法比如:mask rcnn这类实例分割模型,效果比传统的图像分割方法要好的多,所以目前图像分割领域都是用深度学习来做的。但是深度学习也有它的缺点,模型大、推理速度慢、可解释性差、训练数据要求高等。本文在这里仅讨论传统的图像分割算法,可供学习和使用。1、阈值分割最简单的图像分割算法,只直接按照像素值进行分割,虽然简单,但是在一些像素差别较大的场景中表现不错,是一种简单而且稳定的算法。def thresholdSegment(f原创 2020-07-01 23:17:21 · 18641 阅读 · 7 评论 -
python 利用Tesseract-OCR做场景文字识别
一、下载并配置Tesseract1.Tesseract下载地址:2.安装完后,记得配置环境变量,默认是:C:\Program Files (x86)\Tesseract-OCR3.为了在python代码中使用tesseract功能,使用pip安装pytesseract:pip install pytesseract二、场景文字识别例子如果要做真实场景下的文字识别,有一个问题是必须要考虑的,就是复杂场景下怎么保证识别准确率。我举的这个例子可能不太准确,但是能给一些参考吧。我想在一张监控图片中原创 2020-07-01 17:58:00 · 1007 阅读 · 0 评论 -
编译OpenCV时错误,缺少boostdesc_bgm.i文件的问题(附带资源)
其实就是缺少以下文件:boostdesc_bgm.iboostdesc_bgm_bi.iboostdesc_bgm_hd.iboostdesc_lbgm.iboostdesc_binboost_064.iboostdesc_binboost_128.iboostdesc_binboost_256.ivgg_generated_120.ivgg_generated_64.ivgg_generated_80.ivgg_generated_48.i从https://github.com/o原创 2020-05-29 23:38:32 · 3982 阅读 · 6 评论 -
图像旋转 c++/python实现
#include <iostream>#include <string.h> #include <math.h> #include <stdlib.h> #include <malloc.h> #include <cstdio>#include "bmp.h"using namespace std;#define DRAW_HEIGHT 400 //目标图像高度 #define DRAW_原创 2020-05-22 22:50:33 · 222 阅读 · 0 评论 -
图像的乘法求感兴趣区域(图像截取) c++实现
在做图像任务时,会经常需要求取特定矩形框内图像内容,并在此基础上进行下一步操作。典型的应用就是二维码的扫描框。代码的实现比较简单,我先用一个opencv-python的例子来说明。im = cv2.imread(img_file)imNew=im[Ymin:Ymax,Xmin:Xmax] #y1:y2,x1:x2 代表先左上再右下,先y轴再x轴c++代码实现:"bmp.h"的头文件代码:bmp图片的类以及读写函数 bmp.h#include <iostream>#include原创 2020-05-22 21:16:28 · 666 阅读 · 0 评论 -
图像求像素均值、减法求前景 c++实现
图像求像素均值的方法比较简单,将像素值累加后除于像素大小即可,相关代码如下所示:long sum =0;for(int hnum=0;hnum<height;hnum++){ for(int wnum=0;wnum<width;wnum++) { int pixel_point=hnum*l_width+wnum*3; sum=sum+pColorData[pixel_point]+pColorData[pixel_point+1]+pColorData[pixel原创 2020-05-22 20:47:08 · 1521 阅读 · 0 评论 -
图像灰度级的增加、减少 c++实现
图像灰度级的增加、减少,原理比较简单,对每一个像素进行操作,使之增加、减少即可。c++代码实现:"bmp.h"的头文件代码:bmp图片的类以及读写函数 bmp.h#include <iostream>#include <string.h> #include <math.h> #include <stdlib.h> #include <malloc.h> #include <cstdio>#in原创 2020-05-21 23:31:37 · 695 阅读 · 0 评论 -
bmp图片的类以及读写函数 bmp.h
复制一下代码,保存为 bmp.h ,作为头文件使用。#include <iostream>#include <cstdio>#define WIDTHBYTES(bits) (((bits)+31)/32*4)//用于使图像宽度所占字节数为4byte的倍数 typedef unsigned char BYTE; typedef unsigned short WORD; typedef unsigned long DWORD; //win32,win64,l原创 2020-05-21 21:45:45 · 2879 阅读 · 1 评论 -
图像读写的c++ 实现
参考博文 C/C++ BMP(24位真彩色)图像处理(1)------图像の打开与数据区处理#include <string.h> #include <math.h> #include <stdlib.h> #include <malloc.h> #include <iostream>using n...转载 2020-05-08 09:31:21 · 473 阅读 · 0 评论 -
图像的放大:双三次插值算法(C++实现)
双线性插值算法的不足就是细节处理的不好,换句话说,就是曲线拟合得不够光滑,所以又有了双三次插值算法。双三次插值算法是基于周围的16个像素点,通过计算16个像素点的权重,累积得到增加点的像素值的。简单点理解,公式如下:p=f(u,v)=∑i=03∑j=03wijxiyjp=f(u,v)=\sum_{i=0}^{3}\sum_{j=0}^{3}w_{ij}x_{i}y_{j}p=f(u,v)...原创 2020-05-06 15:42:06 · 3942 阅读 · 6 评论 -
图像的放大:双线性插值算法(C++实现)
图像的放大本质上就是增加像素点,目前常用的传统方法是内插法,代表算法有最临近点插值算法、双线性插值算法和双三次插值法,这些算法都是基于相邻像素点的像素值计算所要增加的像素点的像素值,因而在放大时会有失真的现象存在。在深度学习领域,图像的方法也称为超分辨率,一般采用Gan网络对抗生成高分辨率图片,尽管在一些数据集中取得不错的表现,但是算法的鲁班性还有待加强。因此,了解传统的内插法还是有很大必要的。...原创 2020-05-05 23:33:09 · 7018 阅读 · 1 评论 -
图像的缩小(c++实现)
图像的放大、缩小欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Mark...原创 2020-05-05 21:34:55 · 5074 阅读 · 3 评论 -
数字图像处理编程作业
图像处理基础图像的放大、缩小图像灰度级的增加、减少图像的求平均、减法求前景、乘法求感兴趣区域、旋转灰度变换与空间滤波点处理:灰度值反转、对数变换、伽马变换直方图处理:计算直方图、直方图均衡化平滑滤波:均值滤波、中值滤波锐化滤波:拉普拉斯算子图像复原与重建空间域复原产生高斯噪声和脉冲噪声的图片用中值滤波器、均值滤波器、维纳滤波处理上面的噪声...原创 2020-05-04 20:30:54 · 742 阅读 · 0 评论