matlab遍历图像、字符串数组等基本操作

Matlab基本操作

1.遍历图像

1.1遍历文件夹图像

imgPath = 'E:/imageData/';        % 图像库路径
imgDir  = dir([imgPath '*.jpg']); % 遍历所有jpg格式文件
for i = 1:length(imgDir)          % 遍历结构体就可以一一处理图片了
    img = imread([imgPath imgDir(i).name]); %读取每张图片
end

1.2遍历文件夹子目录内所有图像

imgDataPath = 'E:/imageData/';
imgDataDir  = dir(imgDataPath);             % 遍历所有文件
for i = 1:length(imgDataDir)
    if(isequal(imgDataDir(i).name,'.')||... % 去除系统自带的两个隐文件夹
       isequal(imgDataDir(i).name,'..')||...
       ~imgDataDir(i).isdir)                % 去除遍历中不是文件夹的
           continue;
    end
    imgDir = dir([imgDataPath imgDataDir(i).name '/*.jpg']); 
    for j =1:length(imgDir)                 % 遍历所有图片
        img = imread([imgDataPath imgDataDir(i).name '/' imgDir(j).name]);
    end
end

2.字符数组操作

以下代码实现对不同名称的图像进行高斯滤波

name={'Lena','Monarch','House'};//字符串元胞数组
D={'10','20','30','40','50','75','100'};

for i=1:length(name)
    for j=1:length(D)
        [name{i},D{j}]//读取内容用大括号{},若使用(),则输出还是元胞数组,不是字符串
        path=['testimages\\',[name{i},D{j}],'.png'];//字符串拼接用[]
        img=imread(path);
        sigma=str2num(D{j});
        W = fspecial('gaussian',[sigma,sigma],1); 
        result = imfilter(img, W,'conv');
        psnr=getPSNR(img,result);
        imwrite(result,['testimages\\',[name{i},D{j}],'-psnr-',num2str(psnr),'.png']);
    end
end
//计算峰值信噪比
function [psnr]=getPSNR(src,dst)
    diff=src-dst;
    MSE= sum(diff(:).*diff(:))/prod(size(src));
    psnr = 10*log10(255^2/MSE);
end

3.寻找峰值

findpeaks 寻找峰值函数
pks = findpeaks(data)
[pks,locs] = findpeaks(data) ------pks 对应峰值,locs 对应峰值位数
[...] = findpeaks(data,'minpeakheight',mph)----mph 设定峰值的最小高度
[...] = findpeaks(data,'minpeakdistance',mpd)----mpd 设定两峰值间的最小间隔数
[...] = findpeaks(data,'threshold',th)
[...] = findpeaks(data,'npeaks',np)
[...] = findpeaks(data,'sortstr',str)

4.化简多项式

//for example
syms theta L x1 z1 x2  f dX
z1=L.*f.*f/((x2-x1).*f.*cos(theta)-(f.*f+x1.*x2).*sin(theta));
dz=dX.*sin(theta).*z1.*z1/((L.*f.*f)-dX.*sin(theta).*z1);
simplify(dz)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明月醉窗台

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值