图像处理
Shuai@
这个作者很懒,什么都没留下…
展开
-
数字图像处理学习
数字图像处理学习图像采样量化,彩色图像模型,图像灰度变换(如Log变换,Gamma变换等)直方图均衡和直方图匹配Gamma变换直方图匹配思考:直方图匹配能否用于颜色的风格迁移图像平滑模板和锐化模板其中值得注意的是卷积是相当于先旋转180度然后在进行相关的。图像的一阶微分和二阶微分,二阶微分关注的是梯度变化的点...原创 2021-10-13 19:49:03 · 75 阅读 · 0 评论 -
torch.cat 和 torch.stack
torch.cat 和 torch.stack看起来相似但是性质还是不同的使用python中的list列表收录tensor时,然后将list列表转化成tensor时,会报错。这个时候就要使用torch.stack进行堆叠,转化成tensor。torch.cat()torch.cat(tensors,dim=0,out=None)→ Tensortorch.cat()对tensors沿指定维度拼接,但返回的Tensor的维数不会变import torcha = torch.rand((2, 3原创 2021-08-12 14:55:06 · 951 阅读 · 0 评论 -
h5py如何存储字符串
h5py如何存储字符串确定存储的数据类型,python3 vlen = str ,python 2 vlen=unicode。新建数据库后,明确数组的维度,传入类型,再赋值。dt = h5py.special_dtype(vlen=str)data = np.array([['str1'],['str2']])with h5py.File('mydata.h5','w') as f: ds = f.create_dataset('test_dict', data.shape , dtype原创 2021-07-23 16:25:51 · 884 阅读 · 0 评论 -
深度学习-图片数据的标准化数据处理流程
深度学习数据的标准化数据处理流程以下程序基于python编写数据的读入数据的取,可以使用skimage的io函数读取,也可以使用opencv-python来读取或者PIL读数据。- from skimage.io import imread- cv2.imread- PIL我个人推荐的顺序是使用cv2,skimage ,PILcv2 、skimage和 PIL中都集成了很多处理图像的函数注意:CV2读取的数据顺序是BGRskimagefrom skimage.io import i原创 2021-07-21 16:15:29 · 1065 阅读 · 1 评论 -
numpy改变数组类型的方法
使用astype函数转换dtypeimport numpy as npa = np.zeros([2,2],dtype='float32')print("a type is {}".format(a.dtype))b = a.astype(int)print("b is type {}".format(b.dtype))b = a.astype(np.float32)print("b is type {}".format(b.dtype))numpy.ndarray.astype输入的原创 2021-07-21 15:46:29 · 3548 阅读 · 0 评论 -
使用pytorch的dataloader来平衡不平衡数据的抽取
参考聊聊Pytorch中的dataloader定义sample:(假设dataset类返回的是:data, label)from torch.utils.data.sampler import WeightedRandomSampler## 如果label为1,那么对应的该类别被取出来的概率是另外一个类别的2倍weights = [2 if label == 1 else 1 for data, label in dataset]sampler = WeightedRandomSampler(转载 2021-07-05 16:49:38 · 5047 阅读 · 0 评论 -
MedPy医学图像评价的python库
MedPy is a medical image processing library written in Python. MedPy requires Python 3.官网链接其中MedPy库的评价指标函数这个库提供了对比两个mask相似性的指标,例如Dice coefficientJaccard coefficientHausdorff Distance.Metric measures (medpy.metric)This package provides a number of原创 2021-07-01 17:15:31 · 2385 阅读 · 0 评论 -
TypeError: Expected Ptr<cv::UMat> for argument ‘image‘
python3+opencv TypeError: Expected Ptr<cv::UMat> for argument ‘image‘输入的不是UMat格式,使用cv2.UMat(img).get()转化一下img = cv2.UMat(img).get()原创 2021-06-20 23:58:30 · 2337 阅读 · 1 评论 -
python 中opencv的注意事项
注意细节:使用cv2.imread()读取图片之后,数据的形状和维度布局是(H,W,C),但是使用函数cv2.resize()进行缩放时候,传入的目标形状是(W,H),而不是(H,W),这一点要格外留意.原创 2021-06-20 18:11:00 · 96 阅读 · 0 评论 -
使用python的opencv库进行分割图可视化
import cv2import osimport numpy as npimg_list = os.listdir('../0_test/')img_num = len(img_list)for i in range(img_num): print(img_list[i]) img =cv2.imread('../0_test/'+img_list[i]) origin = img.copy() disc =cv2.imread('../1_disc/JPG/'原创 2021-03-16 21:03:26 · 3019 阅读 · 2 评论 -
图像处理2:图像直方图(c++)
计算图像的直方图要注意opencv中起始点是左上角是(0,0)为了符合常见的直观,要进行上下镜像变换。void imagehist(Mat src)//, Mat dst{ Mat EH = Mat::zeros(src.size(), CV_8UC1); double hist[3][256]; for (int i = 0; i < 3; i++) { for (int j = 0; j < 256; j++) { hist[i][j] = 0; } }原创 2021-03-09 10:59:33 · 518 阅读 · 0 评论 -
图像处理3:直方图均衡化(c++)
目的:改善图像的视觉效果,便于对图像的分析和处理。直方图均衡化:通过修改直方图来增强图像。图像锐化法:增强图像的边缘或轮廓。直方图均衡化将原图像通过某种变换,得到一幅具有均匀分布灰度直方图的新图像。g(i,j)=G(f(i,j))变换函数满足条件:在 0≤f(i,j)≤255内为单调递增函数,灰度级从黑到白次序不变。0≤g(i,j)≤255,确保映射函数变化后的像素在允许的范围内。//直方图均衡化Mat equalizeHist(Mat image){ //图像灰度化 Mat原创 2021-03-09 10:59:18 · 1131 阅读 · 0 评论 -
图像处理4:图像锐化(C++)
梯度锐化法对于离散的图像而言,一阶偏导数采用一阶差分近似表示为为简化运算,经常采用梯度算子算法void CMFCworkDlg::OnBnClickedButton4(){ // TODO: 在此添加控件通知处理程序代码 Mat image = imread("ema.jpg", 1); Mat image_gray = gray_img(image); Mat result, grad; result.create(image.size(), CV_8UC1); grad原创 2021-03-09 10:58:36 · 1331 阅读 · 1 评论 -
图像处理5:Laplace增强算子法(C++)
Laplace增强算子法Laplace算子是线性二阶微分算子对于离散的图像而言,二阶偏导数可用二阶差分近似Laplace增强:void CMFCworkDlg::OnBnClickedButton5(){ // TODO: 在此添加控件通知处理程序代码 //laplace增强 Mat image = imread("ema.jpg", 1); Mat image_gray = gray_img(image); Mat result, laplaceimg; result.原创 2021-03-09 10:58:21 · 1465 阅读 · 0 评论 -
图像处理5:Roberts边缘检测算子(C++)
void CMFCworkDlg::OnBnClickedButton6(){ // TODO: 在此添加控件通知处理程序代码 // Roberts算子边缘检测 Mat image = imread("ema.jpg", 1); Mat image_gray = gray_img(image); Mat grad; grad.create(image.size(), CV_8UC1); for (int i = 1; i < image_gray.rows - 1; i++) ..原创 2021-03-09 10:58:03 · 1819 阅读 · 1 评论 -
图像处理5:Sobel边缘检测算子(C++)
void CMFCworkDlg::OnBnClickedButton7(){ // TODO: 在此添加控件通知处理程序代码 // Sobel算子边缘检测 Mat image = imread("ema.jpg", 1); Mat image_gray = gray_img(image); Mat gradx,grady; gradx.create(image.size(), CV_8UC1); grady.create(image.size(), CV_8UC1); for ..原创 2021-03-09 10:57:50 · 698 阅读 · 0 评论 -
图像处理5:图像边缘检测总结
小结:梯度边缘检测算子,模板简单,得到的边缘较粗,对噪声敏感。Roberts算子是2×2模板,对具有陡峭的低噪声图像响应最好。Sobel、Prewitt、Krisch算子是3×3模板,对灰度渐变和噪声较多的图像处理较好,与采用2×2模板的算子相比,边缘检测效果较好,并且抗噪声能力更强。Laplace算子对噪声比较敏感,并且产生了双像素宽度的边缘。Canny得到的检测结果优于Roberts、Sobel算子的检测结果,边缘细节更丰富。...原创 2021-03-08 21:31:33 · 784 阅读 · 0 评论 -
图像处理6:图像滤波
任何一幅未经处理的原始图像,都存在着一定程度上的噪声干扰。噪声恶化图像质量,使图像模糊,甚至淹没需要检测的特征,给图像的分析带来困难,因此需要对图像进行滤波处理。图像滤波算法主要分两类:空域滤波和频域滤波。1、空域滤波空域法是在空间域内直接对图像的灰度值进行处理。邻域平均法中值滤波法数学形态学法...原创 2021-03-08 21:31:20 · 386 阅读 · 0 评论 -
图像处理6:图像滤波-形态学滤波
如下是source.jpgvoid CMFCworkDlg::OnBnClickedButton10(){ // TODO: 在此添加控件通知处理程序代码 // TODO: 在此添加控件通知处理程序代码 Mat image = imread("source.jpg", 0); Mat structure_element = getStructuringElement(0, Size(13, 12)); Mat dst_erode, dst_dilate;...原创 2021-03-08 21:31:01 · 859 阅读 · 0 评论 -
图像处理6:高斯平滑滤波(C++)
void CMFCworkDlg::OnBnClickedButton9(){ // TODO: 在此添加控件通知处理程序代码 // TODO: 在此添加控件通知处理程序代码 Mat image = imread("ema.jpg", 1); Mat image_gray = gray_img(image); Mat result; result.create(image.size(), CV_8UC1); for (int i = 1; i < ...原创 2021-03-08 21:30:48 · 554 阅读 · 0 评论 -
图像处理7:图像目标检测
void CMFCworkDlg::OnBnClickedButton11(){ // TODO: 在此添加控件通知处理程序代码 //otsu Mat src = imread("ema.jpg", 0); int KT = cal_otsu(src); _cprintf("KT=%d\n", KT); Mat grayImg; grayImg.create(src.rows, src.cols, CV_8UC1); for (int i = 0; i < src...原创 2021-03-08 21:30:19 · 325 阅读 · 0 评论 -
图像处理7:基于运动信息的目标检测
void CMFCworkDlg::OnBnClickedButton14(){ // TODO: 在此添加控件通知处理程序代码 Mat greyimg; Mat foreground, foreground2; Ptr<BackgroundSubtractorKNN> ptrKNN = createBackgroundSubtractorKNN(100, 400, true); Ptr<BackgroundSubtractorMOG2> ...原创 2021-03-08 21:30:03 · 549 阅读 · 1 评论 -
图像处理7:基于特征点匹配的目标检测
基于特征点匹配的目标检测void CMFCworkDlg::OnBnClickedButton16(){ // TODO: 在此添加控件通知处理程序代码 //Load Image Mat src1 = imread("1.1.jpg", 1); Mat src2 = imread("1.2.jpg", 1); imshow("src1", src1); imshow("src2", src2); if (!src1.data || !src2.data) { _原创 2021-03-08 21:29:40 · 739 阅读 · 0 评论 -
图像处理8:CamShift算法目标跟踪(C++)
CamShift算法原创 2021-03-08 21:29:21 · 332 阅读 · 0 评论 -
图像处理:人脸识别CascadeClassifier
//CascadeClassifier void CMFCworkDlg::OnBnClickedButton21(){ // TODO: 在此添加控件通知处理程序代码 CascadeClassifier faceCascade; faceCascade.load("haarcascade_frontalface_alt2.xml");//加载分类器 VideoCapture capture; capture.open(0);// 打开摄像头 // capture.open("v.原创 2021-03-08 21:29:06 · 694 阅读 · 0 评论 -
face_detect
void CMFCworkDlg::OnBnClickedButton23(){ // TODO: 在此添加控件通知处理程序代码 size_t inWidth = 300; size_t inHeight = 300; double inScaleFactor = 1.0; Scalar meanVal(104.0, 177.0, 123.0); float min_confidence = 0.5; String modelConfiguration = "deploy.prototxt.原创 2021-03-08 21:28:46 · 341 阅读 · 0 评论 -
读取的img的格式是uint8什么时候转化为float32是合理的?
在进行数据的预处理时,我遇到了一个bug,后来发现是没有将uint8转化为float32的原因,首先说说unit8。uint8 #8位无符号整形如果使用opencv的函数预处理,就是对uint8的数据直接处理。改变了数据类型型反而有问题了。但是自己编写函数时处理unit8的数据要格外小心,因为处理后的结果被强制在0-255的整数内。小于0的数据被限制 为0,而大于255的数据自然为255。所以建议进行float32的数据转换,...原创 2020-12-11 23:46:42 · 1373 阅读 · 1 评论 -
舍弃阈值低的像素,进行均值和标准差统计
img = cv2.imread(data_root+name)print(’\n’+name)threshold = 6assert np.max(img)>=threshold #value 0-255start = time.time()for i_c in range(3):print(np.mean(img[:,:,i_c][img[:,:,i_c]>=threshold]))print(np.std(img[:,:,i_c][img[:,:,i_c]>=thres原创 2020-12-11 15:50:02 · 188 阅读 · 0 评论 -
PyTorch图像处理器torchvision.ToTensor-归一化
ToTensor使用时一定要小心呀它会把图像从[0-255]变到[0-1]之间如果想把图像由numpy 转成 tensor的话,可以使用如下命令img = torch.tensor(img)原创 2020-12-11 11:28:04 · 2051 阅读 · 0 评论 -
Tesseract图片转文字
tesseract4.0:ubuntu16.04 +x64+leptonica1.74.4源码安装(ViewerDebugging)工具记录,参考如下链接tesseract转载 2020-12-10 15:31:00 · 139 阅读 · 0 评论 -
图像处理C++ MFC界面
// MFC_workDlg.cpp: 实现文件//#include "pch.h"#include "framework.h"#include "MFC_work.h"#include "MFC_workDlg.h"#include "afxdialogex.h"#include "opencv2/opencv.hpp"#include <opencv2\imgproc\types_c.h>#include<iostream>#include "conio..原创 2020-12-02 21:31:11 · 1106 阅读 · 0 评论 -
图像处理1:图像的灰度化(c++)
在MFC中的cpp文件中加入头文件#include <opencv2\imgproc\types_c.h>#include<iostream>#include "conio.h"//#include "opencv2\calib3d\calib3d.hpp"#include "opencv2/calib3d.hpp"using namespace std;using namespace cv;using std::max;using std::cout;u原创 2020-11-27 14:37:33 · 2218 阅读 · 1 评论 -
图像处理像元深度
摄像机(1)摄像机的主要特性参数分辨率:位于CCD&CMOS芯片上的像素数速度:线阵摄像机指每秒钟能输出的线数(一维图像,单位lines/s),面针摄像机指每秒钟能输出多少幅图像(二维图像,单位fps)像元深度:灰度由暗到亮的灰阶数,8bit摄像机0代表全暗255代表全亮,10bit1024个灰阶,12bit4096个灰阶。增强测量精度的同时也降低了系统的速度。...原创 2020-11-27 14:04:42 · 757 阅读 · 0 评论