![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
matlab
脉望虫
这个作者很懒,什么都没留下…
展开
-
MATLAB GUI中对缩放的图像/图形操作后仍旧刷新回之前的大小
前言遇到了一个问题,对显示的图像进行操作时,需要放大之后再次进行交互式操作,但是刷新的时候由于只是重新显示,又得重新放大,非常麻烦。类似于这个问题:matlab如何图像放大显示,在其上操作然后显示.里面看了,但是不管用,最终受到https://ww2.mathworks.cn/matlabcentral/answers/23318-reset-to-original-view-with-zoom中的解决方案的启发,解决了整个问题。解决方法其实这种放大归根结底是坐标轴的变化,直接在这上面操作就可以。原创 2021-11-08 10:14:08 · 1232 阅读 · 0 评论 -
matlab中将灰度图像转换为彩色图像
function color_map = gray2color(heat_map)%将灰度图像转换为彩色图像cmap = jet;sz = size(heat_map);color_map = zeros(sz(1), sz(2), 3);for i = 1:256 ind = find(heat_map == i-1); [r,c] = ind2sub(sz, ind); for j = 1:3 color_map(sub2ind([sz(1), sz(原创 2021-09-16 11:20:02 · 16112 阅读 · 5 评论 -
MATLAB训练的模型输出中间层的特征图
前言通常,可视化中间层的特征图有助于增强我们对模型的理解,在MATLAB中使用此功能十分的方便。方法features = activations(network,input ,layer name)调用activations函数即可,三个参数依次为模型的名称,模型的输入,最后一个参数注意是该层的名字。...原创 2021-04-21 17:06:10 · 1999 阅读 · 0 评论 -
MATLAB中物体夹角的检测
前言实验中经常需要测量一个物体的角度变化,如果开发一个图像处理的方法可以大大节省我们的时间,这次我们使用霍夫变换等进行物体夹角的预测。任务图像如下图所示我们需要检测的夹角示意图为:因此整个任务可以分解成两个子任务:检测红边的直线检测绿边的直线之后通过两条直线的k就可以算出夹角,由于实验中红边的位置几乎固定,根据绿边k的符号就可以判断夹角是锐角还是钝角。检测红边很明显,红边所在的位置即为交界处,可以使用边缘检测算子,但是实际的环境很难排除噪声,因此我们这里使用基于颜色的聚类方式首先原创 2021-02-02 12:14:21 · 3984 阅读 · 4 评论 -
MATLAB中使用HSV阈值分割交通标志
前言通常,我们会根据颜色的不同分割不同的目标,例如我们日常生活中经常看到的交通标志,一个很直观的想法就是将颜色从RGB空间转换到HSV空间,根据色调(H)或者饱和度分割不同的目标,下面就是这样一个例子;代码%%clc;clear;close all%%img = imread('test3.jpg');imgHSV = rgb2hsv(img);imgt = imgHSV(:,:,2);%首先进行饱和度筛选(0到1之间),越大说明选择条件越严格BW = imgt>0.8;CC =原创 2021-01-02 22:56:12 · 3110 阅读 · 0 评论 -
MATLAB中图像标注工具——Image Labeler的使用方法
前言深度学习中无论是什么任务,数据集是必不可少的,我们可以使用公开数据集,但实际情况中由于特定的任务我们可能也不得不手动制作数据集。正好本人最近在一个语义分割任务中涉及自己制作数据集,也就是标注图像,虽然有例如labelme、ITKsnap等软件可以用来标注,但MATLAB也提供了一个非常实用的图像标注工具Image Labeler,可以在APP中找到,可以用来标记矩形感兴趣区域 (ROI) 标签、折线 ROI 标签、像素 ROI 标签和场景标签。语义分割任务中用到的是像素ROI标注功能,因此在本篇博客中原创 2020-12-16 19:27:13 · 20749 阅读 · 23 评论 -
MATLAB中将两次分割结果合并在一起
前言通常我们会获得在不同方法下的分割结果,如果获得的是概率图,我们可以取平均值然后根据阈值或者argmax确定最终的类别,但是如果我们仅仅想把两次分割的结果合并,并填充空洞,下面就是具体的代码:代码以下代码只适用于两类分割结果的合并path1 = 'E:\S1';path2 ='E:\S2';save_path = 'E:\S3';fnames = dir(fullfile(path1,'*.png'));for i = 1:numel(fnames) img1 = imread(f原创 2020-12-09 18:00:18 · 1108 阅读 · 0 评论 -
matlab边缘检测区域生长和分水岭的代码示例
代码详细说明见注释,图片使用的是matlab内置的图像,直接可以运行% Methods of edge detection:LoG and cannyclc;clear;close all%Read imageimg = imread('cameraman.tif');edge_log = edge(img,'log');edge_canny= edge(img,'canny');%watershed%Filter the image, you can alse annotate this原创 2020-12-05 21:24:46 · 860 阅读 · 0 评论 -
MATLAB中将分割结果保存为单通道彩色的图像
前言可能标题有点歧义,既然是彩色图像,怎么可能是单通道的呢?其实一想就容易理解,实质上就是索引图像。为了后续处理方便,在多类目标的掩膜图像中,灰度值经常设置为0,1,2,3…,分割的结果不经过灰度拉伸根本看不出来长什么样子,将灰度值拉伸后又害怕后续处理麻烦,因此便想出来,直接将图像存储成彩色索引图像就行。代码在这里插入代码片...原创 2020-12-01 21:22:08 · 1055 阅读 · 0 评论 -
MATLAB中滤波演示
MATLAB中使用均值、中值、prewitt滤波器的几个例子clc;clear; close all%% 盒式滤波器img = imread('lena256.bmp');%图像读取img = rgb2gray(img);%转换为灰度图h1 = fspecial('average',3); %3×3卷积核img_filted1 = imfilter(img,h1);h2 = fspecial('average',11); %11×11卷积核img_filted2= imfilter(img,原创 2020-11-24 13:54:45 · 632 阅读 · 0 评论 -
MATLAB中绘制ROC曲线
我们通常使用ROC曲线来评价分类结果的好坏,在MATLAB中绘制该曲线其实也十分容易。我们让label表示真实的类别,output表示预测的类别,那么调用:[XRF,YRF,TRF,AUCRF] = perfcurve(label,output,1);之后运行:plot(XRF,YRF)即可得到ROC曲线,该函数中还有一个参数,也就是正类的标签(positive class label),该变量是一个常数,可以为数值,也可是是字符串等,需要指定一下。上面的例子中,我们输出的结果和标签都是0或1的原创 2020-10-10 20:17:20 · 5039 阅读 · 7 评论 -
MATLAB中提取二值图像的边缘
前言图像处理中,经常会遇到提取图像边缘的问题,实现也不难,一般的,如果仅为可视化,可以直接通过形态学膨胀减去之前的图像获得,但这样难以提取到具体的坐标,也会使图像边缘太“厚”。其实MATLAB中内置的函数 bwboundaries就可以实现这个功能。用法示例bound = bwboundaries(BW);%提取边缘for k = 1:numel(bound) boundary = bound{k}; plot(boundary(:,2), boundary(:,1),'LineW原创 2020-09-20 21:34:50 · 5067 阅读 · 0 评论 -
MATLAB下直方图均衡化算法的改进及代码实现
前言在博文https://blog.csdn.net/u012590570/article/details/50347687?tdsourcetag=s_pctim_aiomsg中,博主对传统直方图均衡化算法进行了改进,改进后的算法剔出了图像中原来存在的低频信息,对高频信息进行了很好的保留,取得了很好的效果,在本篇博文中,我将使用MATLAB复现原作者提出的算法。代码clc;clear;close all%% 读取图像% I = imread('test.jpg');I=rgb2gray(imr原创 2020-06-07 16:22:23 · 2017 阅读 · 0 评论 -
MATLAB中不同GUI之间的内容传递
前言不同GUI的数据传递有很多种方式,这篇博文中写的十分详细,供自己和各位读者参考。本篇博文主要记录像函数一样调用GUI的问题,这样在关闭GUI时自动返回一个值供我们后来使用,这和在普通脚本中调用GUI和在一个GUI中调用另一个GUI区别不大。主要步骤在GUI子程序的OpeningFcn函数的结尾加上uiwait(handles.figure1); figure1是子GUI的Tag。在GUI的OpenFcn中,如果不加uiwait, 程序会直接运行到下面,执行OutputFcn。也就是说程序一运行,转载 2020-05-31 15:49:15 · 1008 阅读 · 0 评论 -
MATLAB中使用AlexNet、VGG、GoogLeNet进行迁移学习
直接贴代码,具体用法见注释:clc;clear;net = alexnet; %加载在ImageNet上预训练的网络模型imageInputSize = [227 227 3];%加载图像allImages = imageDatastore('.\data227Alexnet',... 'IncludeSubfolders',true,... 'LabelSource'...原创 2020-04-04 15:47:06 · 5101 阅读 · 15 评论 -
MATLAB中写入RAW MHD文件
在function write_mhd_files(filename, img, resolution, data_type)% construct file namesmhd = strcat(filename, '.mhd');raw = strcat(filename, '.raw');% write mhd filefid=fopen(mhd, 'w');assert(fi...转载 2020-03-21 21:10:27 · 854 阅读 · 0 评论 -
灰度共生矩阵(GLCM)的概念及其相关特征
灰度共生矩阵灰度共生矩阵就是一种通过研究灰度的空间相关特性来描述纹理的常用方法。其中“共生”即为相同的意思,该矩阵表述的是在指定距离和方向上相同灰度值的像素对的个数。形象的表示如下图所示:注:在实际使用过程中,为了减少计算量,需要在强度分辨率上对图像进行下采样变换。比如如果原始图像为8位灰度图像,灰度值为[0 255],若将图像位深变为2位,则灰度值范围是[0 3]。在灰度共生矩阵的基础上...原创 2020-03-11 14:51:30 · 6603 阅读 · 1 评论 -
MATLAB实现向量之间的卡方距离
%输入:x,y%输出:DsubMatrix = x-y;subMatrix2 = subMatrix.^2;addMatrix = x+y;idxZero = find(addMatrix==0);addMatrix(idxZero)=1;DistMat = subMatrix2./addMatrix;D = sum(DistMat,2);转载 2020-03-11 14:18:55 · 1387 阅读 · 1 评论 -
MATLAB日常使用简短代码
1、文件夹中图像全部缩放为指定大小path = '.\data\Lab';fnames = dir(path);for i = 1:length(path)-2 I = imread(fullfile(path,fnames(i+2).name)); I2 = imresize(I,[384,384],'Method','nearest'); imwrite(I2,f...原创 2020-02-16 20:13:03 · 3188 阅读 · 0 评论 -
MATLAB中读取并转换Excel文件
在之前的MATLAB中的csvwrite函数写入问题中,我讨论了csvwrite函数,虽说从底层开始写能降低错误率,但是显然十分低效。实际上,MATLAB中table类型能十分方便地实现excel文件的读取及写入。读取文件直接使用readtable函数可以十分方便地读取文件,例如:data = readtable('课表.xls');加入我们的表格中行名称分别为:a,b,c,我们可以直接...原创 2020-02-11 17:26:38 · 1300 阅读 · 0 评论 -
MATLAB中将数字转换成罗马数字
按位计数法通常我们所接触到的101010进制、222进制计数法都归属于按位计数法,通常来说,NNN进制计数法的特征有:使用的数字有0,1,...,N−10,1,...,N-10,1,...,N−1,共NNN种;从右往左分别为N0位,N1位,N2位……N^0位,N^1位,N^2位……N0位,N1位,N2位……比如,对于NNN进制中的数字b0b1b2b3b4b_0b_1b_2b_3b_4b...原创 2020-02-08 23:03:29 · 3812 阅读 · 0 评论 -
MATLAB中实现argmax函数
argmax函数在一般图像分割任务中十分常见,在Numpy中直接调用np.argmax函数即可,在MATLAB中其实也有,只不过比较隐蔽,其函数原型为:[M,I] = MAX(X,[],DIM)用户可以指定维度(DIM),输出I即为相应的索引。...原创 2020-02-08 21:44:05 · 10089 阅读 · 5 评论 -
MATLAB中读取化学分子式各元素系数
使用MATLAB自动化读取化学分子式各元素系数,可以有效提升效率,总的来说,该项任务主要有以下两个步骤:1、 找到字符串中各个元素;2、 读取该元素之后的数字。在第1步中,非常简单,直接strfind函数就能找到某个元素,但是第2步包含诸多种情况:元素之后无系数,表示系数为1;元素之后无系数且位于字符串末尾,此时系数也为1;元素之后系数大于9,表示系数为多位数字。根据以上诸多种情...原创 2020-02-06 16:48:56 · 831 阅读 · 2 评论 -
MATLAB中cell(元胞)数组的基本用法
说明元胞数组是一种包含名为元胞的索引数据容器的数据类型,其中的每个元胞都可以包含任意类型的数据。元胞数组通常包含文本列表、文本和数字的组合或者不同大小的数值数组。创建对象1、我们可以使用元胞数组构造运算符 {} 创建该数组,例如:% 使用元胞数组构造运算符{}创建数组C = {1,2,3; 'text',rand(5,10,2),{11; 22; 33}}C = 2x3 c...原创 2020-01-29 10:59:05 · 26984 阅读 · 3 评论 -
matlab实时编辑器中修改字体大小
在MATLAB实时编辑器中,按住Crtl键滑动鼠标滚轮即可增大/减小字体的大小。翻译 2019-09-28 23:32:37 · 9031 阅读 · 6 评论 -
MATLAB中求解一个集合中所有子集的方法
本文代码参考https://www.ilovematlab.cn/thread-543482-1-1.html.// 集合中的各个子集S = {'a','c','b','d'};n=4;A = S;ind=ff2n(n)>0;B=arrayfun(@(i)A(:,ind(i,:)),1:2^n,'un',0);转载 2019-09-18 09:03:27 · 4260 阅读 · 0 评论 -
MATLAB中的csvwrite函数写入问题
MATLAB中的csvwrite函数写入问题MATLAB中的csvwrite函数改进方式终极方式日常工作中,我们通常要把处理的数据导出,而csv文件以其简易读取的特点被大量采用。笔者在使用MATLAB导出csv文件时遇到了很多坑,今天就记录下来,以便以后查询。也希望本文能帮助到有需求的小伙伴。MATLAB中的csvwrite函数MATLAB中的csvwrite函数定义为:// Write...原创 2019-01-10 15:32:03 · 35811 阅读 · 8 评论