当前位置: 首页 > news >正文

数字图像处理实验报告

目录

实验二、图像在空间域上的处理方法

实验三、图像在频率域上的处理方法


实验二、图像在空间域上的处理方法

一、实验目的

  1. 了解图像亮(灰)度变换与空间滤波的意义和手段;
  2. 熟悉图像亮(灰)度变换与空间滤波的MATLAB函数和语法;
  3. 熟练掌握应用MATLAB软件编程进行图像亮(灰)度变换与空间滤波的方法;
  4. 完成数字图像的对比度增强和直方图均衡化,设计空间域平滑和锐化滤波器,掌握数字图像在空间域的基本处理方法。

二、实验环境

MATLAB 2014以上版本、Win 8\10\11 系统

三、实验原理

图像亮(灰)度变换与空间滤波属于在空间域内处理图像,是直接对图像的像素进行处理。有两种重要的空间域处理方法,即亮度(或灰度级)变换与空间滤波,后一种方法有时称为邻域处理或空间卷积。

图像亮(灰)度变换采用MATLAB工具箱中的亮度变换函数、直方图处理函数等函数及其相应的语法格式对实验一生成的图像进行处理;空间滤波采用MATLAB工具箱中的标准(线性和非线性)空间滤波器对图像进行空间滤波处理。

涉及函数:imread、size、figure、imshow、subplot、imadd、imsubtract 、rgb2gray、imhist、histeq、imnoise、medfilt2

四、实验内容

(1)新建一个m文件,从桌面示例图像文件夹中读取一张彩色图像,转换为灰度图,读取该图像尺寸,并在一个figure窗口同时展示,标题分别为(“原图”)及(“灰度图”)。

代码:

clc;clear;clear all;

RGB=imread('V.jpg'); %图像读入

I=rgb2gray(RGB);   %把 RGB 图像转换成灰度图像

subplot(121);imshow(RGB),axis on,title("原图");

subplot(122);imshow(I),axis on,title("灰度图");

输出结果截图:

(2)读取一张彩色图像,转换为灰度图,使用imadd及imsubtract 分别对图像进行亮度增和减操作,数值为自己学号末位数×2,并在一个figure窗口同时展示,标题分别为“原图”、“灰度图”、“提亮结果”、“亮度降低结果”。点击右侧工作区中对应图像矩阵,观察亮度增减前后数值变化。

代码:

clc;clear;clear all;

RGB=imread('V.jpg'); %图像读入

I=rgb2gray(RGB);   %把 RGB 图像转换成灰度图像

RGB2=imadd(RGB,20);

RGB3=imsubtract(RGB,20); %学号尾数为10

subplot(221);imshow(RGB),axis on,title("原图");

subplot(222);imshow(I),axis on,title("灰度图");

subplot(223);imshow(RGB2),axis on,title("提亮结果");

subplot(224);imshow(RGB3),axis on,title("亮度降低结果");

输出结果截图:

(3)读取两张彩色图像并转换为灰度图,使用imhist函数显示该图像的直方图,并使用histeq函数分别进行进行直方图均衡化处理。同一个figure窗口中输出,标题分别为“原图1”、“灰度图1”,“原图2”,“灰度图2”、“灰度直方图1”、“灰度直方图2”、“直方图均衡化1”、“直方图均衡化2”。

观察不同图像对应灰度直方图的特征有何差异,对比同一张图直方图均衡化前后的灰度分布差异。

代码:

clc;clear;clear all;

RGB=imread('V.jpg'); %图像读入

RGB1=imread('V1.jpg'); %图像读入

I=rgb2gray(RGB);   %把 RGB 图像转换成灰度图像

I1=rgb2gray(RGB1);   %把 RGB 图像转换成灰度图像

subplot(421);imshow(RGB),axis on,title("原图1");

subplot(422);imshow(I),axis on,title("灰度图1");

subplot(423);imshow(RGB1),axis on,title("原图2");

subplot(424);imshow(I1),axis on,title("灰度图2");

% 计算直方图

hist = imhist(I);

hist1 = imhist(I1);

% 对图像进行直方图均衡化处理

img_eq = histeq(I);

img_eq1 = histeq(I1);

subplot(425);bar(hist);axis on,title("灰度直方图1");

subplot(426);bar(hist1);axis on,title("灰度直方图2");

subplot(427);histeq(I),axis on,title("直方图均衡化1");

subplot(428);histeq(I1),axis on,title("直方图均衡化2");

输出结果截图:

(4)读取一张彩色图像并转换为灰度图,使用imnoise添加椒盐噪声,例如I1=imnoise(I,’salt& pepper’,0.04); 分别使用3*3、5*5、7*7、9*9大小的模板进行中值滤波,在相同figure中输出,标题分别为“原图”、“添加椒盐噪声”、“x*x模板中值滤波”。

代码:

% 读取彩色图像并转换为灰度图

clc;clear;clear all;

RGB=imread('V.jpg'); %图像读入

I=rgb2gray(RGB);   %把 RGB 图像转换成灰度图像

% 添加椒盐噪声

I_noise = imnoise(I, 'salt & pepper', 0.04);

% 使用不同大小的模板进行中值滤波

I_median3 = medfilt2(I_noise, [3 3]);

I_median5 = medfilt2(I_noise, [5 5]);

I_median7 = medfilt2(I_noise, [7 7]);

I_median9 = medfilt2(I_noise, [9 9]);

subplot(321);imshow(RGB),axis on,title("原图");

subplot(322);imshow(I_noise),axis on,title("添加椒盐噪声");

subplot(323);imshow(I_median3),axis on,title("3*3模板中值滤波");

subplot(324);imshow(I_median5),axis on,title("5*5模板中值滤波");

subplot(325);imshow(I_median7),axis on,title("7*7模板中值滤波");

subplot(326);imshow(I_median9),axis on,title("9*9模板中值滤波");

输出结果截图:

(5)读取一张彩色图像并转换为灰度图,利用im2bw函数转换为“二值图像”,分别使用sobel算子及Laplacian算子进行锐化,在相同figure中输出,标题分别为“原图”、“二值图像”、“sobel算子锐化”、“拉普拉斯算子锐化”。

提示:H=fspecail (‘soble’); J=filter2(H,I1);

代码:

% 读取一张彩色图像并转换为灰度图

clc;clear;clear all;

img = imread('V.jpg');

gray_img = rgb2gray(img);

% 利用im2bw函数转换为“二值图像”

bw_img = im2bw(gray_img);

% 使用sobel算子进行锐化

sobel_img = edge(bw_img, 'sobel');

% 使用Laplacian算子进行锐化

laplace_img = edge(bw_img, 'log');

% 在相同figure中输出结果

figure;

subplot(2,2,1);

imshow(img);

title('原图');

subplot(2,2,2);

imshow(gray_img);

title('灰度图');

subplot(2,2,3);

imshow(sobel_img);

title('Sobel算子锐化');

subplot(2,2,4);

imshow(laplace_img);

title('Laplacian算子锐化');

输出结果截图:

实验三、图像在频率域上的处理方法

一、实验目的

  1. 了解图像频域处理的意义和手段;
  2. 熟悉离散傅里叶变换的基本性质;
  3. 熟练掌握图像傅里叶变换的方法及应用;
  4. 通过实验了解二维频谱的分布特点;
  5. 通过本实验掌握利用MATLAB的工具箱实现数字图像的频域处理,构建各式常见频率域滤波器,并熟悉其特点与应用场景。

二、实验环境

MATLAB 2014以上版本、Win 8\10\11 系统

三、实验原理

图像的频率是图像在平面空间上的梯度,是表征图像中图像变化剧烈程度的指标。例如,大面积的海洋在图像中是一片图像变化缓慢的区域,对应的频率值很低;而地表属性变换剧烈的边缘区域在图像中则是一片图像变化剧烈的区域,对应的频率值较高。频域滤波增强是利用图像变换方法将原来的图像空间中的图像以某种形式转换到其他空间中,然后利用该空间的特有性质方便地处理图像,最后再转换回原来的图像空间中,从而得到处理后的图像。图像的频率域处理图像处理中占有重要的地位,在图像的去噪、图像压缩、特征提取和图像识别方面发挥着重要的作用。

图像频率域采用MATLAB工具箱中的傅里叶变换函数、滤波函数等函数及其相应的语法格式图像进行处理;

在MATLAB 中,函数fft、fft2和fftn分别可以实现一维、二维和N维DFT 算法:而函数 ifft、ifft2 和 ifftn 则用来计算反 DFT。fftshift 函数可以把傅里叶操作(fft,fft2,fftn)得到的结果中的零频率成分移到矩阵的中心,这样有利于观察频谱;

涉及函数:imread、figure、imshow、subplot、rgb2gray、log、abs、fft、fft2、fftshift、ifft2

四、实验内容

(1)新建一个m文件,从桌面示例图像文件夹中读取一张彩色图像,转换为灰度图,利用傅里叶变换函数fft2与fftshift显示图像的傅里叶变换频谱图,并在一个figure窗口同时展示,标题分别为“原图”、“灰度图”、“变换频谱”。

代码:

clc;clear;clear all;

I=imread('V.jpg');

figure

subplot(311),imshow(I),title("原图像")

GrayI=rgb2gray(I);

subplot(312),imshow(GrayI),title('灰度图像')

fft2(GrayI);

S=fftshift(fft2(GrayI));

subplot(313),imshow(log(abs(S)),[]),title('频谱')

输出结果截图:

(2)读取一张彩色图像,转换为灰度图,使用fft2进行傅里叶变换,接着使用ifft2进行傅里叶逆变换,并在一个figure窗口同时展示,标题分别为“原图”、“灰度图”、“二维傅里叶变换”、“傅里叶逆变换”。观察变换前后图像,及对应图像矩阵是否与原图相同。

代码:

clc;clear;clear all;

% 读取彩色图像

rgb_img = imread('V.jpg');

% 转换为灰度图

gray_img = rgb2gray(rgb_img);

% 进行二维傅里叶变换

fft_img = fft2(gray_img);

% 进行傅里叶逆变换

ifft_img = ifft2(fft_img);

% 显示图像

figure;

subplot(2, 2, 1);

imshow(rgb_img);

title('原图');

subplot(2, 2, 2);

imshow(gray_img);

title('灰度图');

subplot(2, 2, 3);

imshow(abs(fftshift(fft_img)), []);

title('二维傅里叶变换');

subplot(2, 2, 4);

imshow(abs(ifft_img), []);

title('傅里叶逆变换');

输出结果截图:

(3)读取一张彩色图像并转换为灰度图,接着对图像进行傅里叶正反变换,对比变换前后是否相同。同一个figure窗口中输出,标题分别为“原图”、“傅里叶变换”,“傅里叶反变换”。

代码:

clc;clear;clear all;

I=imread('V.jpg');

figure

subplot(311),imshow(I),title("原图像")

A=rgb2gray(I);

B=fft2(A);

C=fftshift(B);

subplot(312),imshow(log(abs(C)),[]),title('傅里叶变换')

D=ifft2(B);

subplot(313),imshow(uint8(abs(D))),title('傅里叶反变换')

输出结果截图:

(4)读取一张彩色图像并转换为灰度图,使用fft函数及fft2函数验证二维离散傅里叶变换可分解为两个一维离散傅里叶变换(先行变换,后列变换)在相同figure中输出,标题分别为“原图”、“fft2实现变换”、“fft实现变换”。

代码:

clc;clear;clear all;

% 读取彩色图像并转换为灰度图

img = imread('V.jpg');

gray_img = rgb2gray(img);

% 在同一figure中输出原图

subplot(1,3,1);

imshow(gray_img);

title('原图');

% 使用fft2函数进行二维离散傅里叶变换

fft2_img = fft2(gray_img);

% 在同一figure中输出使用fft2函数实现的变换结果

subplot(1,3,2);

imshow(log(abs(fftshift(fft2_img))),[]);

title('fft2实现变换');

% 使用fft函数进行一维离散傅里叶变换(先行变换)

fft_row_img = fft(gray_img,[],1);

% 使用fft函数进行一维离散傅里叶变换(后列变换)

fft_col_img = fft(fft_row_img,[],2);

% 在同一figure中输出使用fft函数实现的变换结果

subplot(1,3,3);

imshow(log(abs(fftshift(fft_col_img))),[]);

title('fft实现变换');

输出结果截图:

(5)读取一张彩色图像并转换为灰度图,使用imnoise函数加入高斯白噪声,绘制加噪后图像,使用fft函数绘制加噪后图像傅里叶频谱图。接着设计一个截止频率D0=M*10(其中M=学号末位数)的理想低通滤波器(ILPF)对图像进行滤波处理,绘制滤波后噪声图及滤波后的傅里叶频谱图。上述结果在同一figure中显示,标题分别为“加噪后图像”、“噪声fft”、“滤波后噪声图”、“滤波后噪声图fft”。

提示:

①对于大小为M*N的图像,频率点(u, v)与频率中心的距离为D(u, v),其表达式为:

②理想低通滤波器的产生公式为:

代码:

clc;clear;clear all;

% 读取彩色图像并转换为灰度图

rgb_img = imread('V.jpg');

gray_img = rgb2gray(rgb_img);

% 加入高斯白噪声

noisy_img = imnoise(gray_img, 'gaussian');

% 绘制加噪后图像

figure;

subplot(2,2,1);

imshow(noisy_img);

title('加噪后图像');

% 使用FFT函数绘制加噪后图像傅里叶频谱图

noisy_fft = fft2(noisy_img);

noisy_fft_shifted = fftshift(noisy_fft);

noisy_fft_mag = abs(noisy_fft_shifted);

subplot(2,2,2);

imshow(log(1+noisy_fft_mag), []);

title('噪声fft');

% 设计理想低通滤波器(ILPF)对图像进行滤波处理

M = 2; % 学号末位数是0(更换为2)

D0 = M*10;

[height, width] = size(noisy_img);

[x, y] = meshgrid(1:width, 1:height);

center_x = floor(width/2)+1;

center_y = floor(height/2)+1;

d = sqrt((x-center_x).^2 + (y-center_y).^2); % 欧几里得距离

H_ILPF = double(d<=D0); % 理想低通滤波器

% 对图像进行滤波处理

noisy_fft_filtered_shifted = noisy_fft_shifted .* H_ILPF;

noisy_filtered = real(ifft2(ifftshift(noisy_fft_filtered_shifted)));

% 绘制滤波后噪声图及滤波后的傅里叶频谱图

subplot(2,2,3);

imshow(noisy_filtered, []);

title('滤波后噪声图');

filtered_fft = fft2(noisy_filtered);

filtered_fft_shifted = fftshift(filtered_fft);

filtered_fft_mag = abs(filtered_fft_shifted);

subplot(2,2,4);

imshow(log(1+filtered_fft_mag), []);

title('滤波后噪声图fft');

输出结果截图:

相关文章:

数字图像处理实验报告

目录 实验二、图像在空间域上的处理方法 实验三、图像在频率域上的处理方法 实验二、图像在空间域上的处理方法 一、实验目的 了解图像亮&#xff08;灰&#xff09;度变换与空间滤波的意义和手段&#xff1b;熟悉图像亮&#xff08;灰&#xff09;度变换与空间滤波的MATLA…...

【C51】10-基础51单片机的小车项目(51完结)

10.1小车的安装 10.2电机模块的开发&#xff08;L9110S&#xff09; 接通 VCC &#xff0c; GND 模块电源指示灯亮&#xff0c; 以下资料来源官方&#xff0c;但是不对&#xff0c;根据下节课实际调试 IA1 输入高电平&#xff0c; IA1 输入低电平&#xff0c;【 OA1 OB1 】电…...

进程、线程、锁阶段总结汇总

目录 进程 线程 锁 由于进程线程和锁的方面比较陌生&#xff0c;并且繁杂&#xff0c;所以简单总结一下学习到的函数API 进程 子进程创建 fork(); 进程结束 exit(); 进程回收 wait(); 进程回收 waitpad(); //函数可以指定进程组中的任意子进程&#xff0c;可以设置特殊…...

Filters.jar图片转素描

链接&#xff1a;https://pan.baidu.com/s/1ATlC2l1I83TPYFomHiWuFg?pwd2vm5 提取码&#xff1a;2vm5...

将MSYS2 MinGW集成到Windows终端

微软开发了一款Windows终端的开源软件&#xff0c;非常好用。安装后在Win7及以上系统会在右键菜单中添加一条“在终端中打开”的命令&#xff0c;非常方便。它默认配置了Windows命令行以及PowerShell&#xff0c;如果安装了Visual Studio 2022还会配置Visual Studio 2022的命令…...

SpringBoot项目使用slf4j的MDC日志打点功能

SpringBoot项目使用slf4j的MDC日志打点功能 物料准备&#xff1a; 1.自定义1个线程MDC打点工具类 2.配置logback打印MDC打点的traceId 3.配置webMVC使用MDC打点 4.配置ThreadPoolTaskExecutor使用MDC打点 5.配置HttpClient使用MDC打点 6.测试MDC日志打点效果 线程mdc打…...

宝塔修改默认端口后面板打不开

1、查看防火墙开启的端口&#xff0c;发现没有开启8888 [rootVM-12-12-centos ~]# firewall-cmd --list-ports 20/tcp 21/tcp 22/tcp 80/tcp 888/tcp 8081/tcp 39000-40000/tcp 8081/udp 2、防火墙开启8888端口 [rootVM-12-12-centos ~]# firewall-cmd --zonepublic --add-por…...

tinkerCAD案例:3.基本按钮

基本按钮 在本课中&#xff0c;您将学习制作具有圆柱形状的基本按钮。 说明 将圆柱体拖动到工作平面。 将其缩小到 2 毫米的高度。 提示&#xff1a; 您可以使用圆柱形状顶部的白点缩小圆柱体。 将其缩小到直径 16 毫米。 这将是按钮的主要形状。 现在我们可以创建允许将纽…...

客户线上反馈:从信息搜集到疑难 bug 排查全流程经验分享

写在前面&#xff1a;本文是我在前端团队的第三次分享&#xff0c;应该很少会有开发者写客户反馈处理流程以及 bug 排查的心得技巧&#xff0c;全文比较长&#xff0c;写了一个多星期大概1W多字&#xff08;也是我曾经2年工作的总结&#xff09;&#xff0c;如果你有耐心阅读&a…...

悲观锁、乐观锁、自旋锁

悲观锁、乐观锁、自旋锁 &#xff08;1&#xff09;乐观锁 乐观锁是一种乐观的思想&#xff0c;即认为读多写少&#xff0c;遇到并发的可能性低&#xff0c;每次拿数据时都认为别人不会修改&#xff0c;所以不会上锁&#xff0c;但是在更新的时候会判断一下在此期间别人有没有…...

七、进程地址空间

一、环境变量 &#xff08;一&#xff09;概念 环境变量(environment variables)&#xff1a;系统当中用做特殊用途的系统变量。 如&#xff1a;我们在编写C/C代码的时候&#xff0c;在链接的时候&#xff0c;从来不知道我们的所链接的动态静态库在哪里&#xff0c;但是照样可…...

浅谈智能微电网供电系统的谐波治理

摘要&#xff1a;智能微电网供电系统的特性容易引发谐波&#xff0c;而谐波导致电力损耗加大&#xff0c;降低供电质量。本文从谐波的产 生原因和危害做出详细阐述&#xff0c;并结合智能微电网提出了治 理谐波的方法和措施。 关键词&#xff1a;智能微电网&#xff1b;谐波危害…...

springboot项目的社区/博客系统

课前导读&#xff1a; 你学完一篇&#xff0c;你就多会一项技能&#xff0c;多多少少对你还是有点帮助的不是吗&#xff1f;~~~ 这是博主网页的url&#xff1a;优文共享社区 开发环境&#xff1a;JDK1.8&#xff0c;IDEA2021&#xff0c;MySQL5.7&#xff0c;Windows11 开发技术…...

go语言基础——函数、结构体、接口

由于go不是一门面向对象的语言&#xff0c;因此在有一些特性上和java是有一些区别的&#xff0c;比如go中就没有类这样的概念。下面来介绍一下go的一些特性。 结构体 结构体类似与java中的类&#xff0c;但又不完全一样。在类中&#xff0c;可以定义字段和方法&#xff0c;但…...

项目集管理—项目集治理

一、概述 项目集治理是实现和执行项目集决策&#xff0c;为支持项目集而制定实践&#xff0c;并维持项目集监督的绩效领域。 本章包括&#xff1a; 项目集治理实践项目集治理角色项目集治理设计与实施 项目集治理包括为了满足组织战略和运营目标的要求&#xff0c;对项目集实…...

MySQL了解之复制(一)

1.1、复制解决的问题 数据复制技术有以下一些特点&#xff1a; (1) 数据分布 (2) 负载平衡(load balancing) (3) 备份 (4) 高可用性(high availability)和容错 1.2、复制如何工作 从高层来看&#xff0c;复制分成三步&#xff1a; (1) master将改变记录到二进制…...

Halcon得出三角形内切圆

Halcon得出三角形内切圆 news2023/5/27 7:14: 目录 一、得出三角形的三个角点二、用类似尺规作图法得出三角形圆心 1、以三角形三角点画出圆形轮廓2、求出三角形轮廓与圆形轮廓之间的交点3、获得角平分线&#xff0c;三边角平分线交点为圆心三、求出圆心到边最短距离即半径 …...

2023年6月北京/广州/深圳CDGA/CDGP数据治理认证招生

DAMA认证为数据管理专业人士提供职业目标晋升规划&#xff0c;彰显了职业发展里程碑及发展阶梯定义&#xff0c;帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力&#xff0c;促进开展工作实践应用及实际问题解决&#xff0c;形成企业所需的新数字经济下的核心职业…...

KMP 算法(Knuth-Morris-Pratt)

tip&#xff1a;作为程序员一定学习编程之道&#xff0c;一定要对代码的编写有追求&#xff0c;不能实现就完事了。我们应该让自己写的代码更加优雅&#xff0c;即使这会费时费力。 推荐&#xff1a;体系化学习Java&#xff08;Java面试专题&#xff09; 文章目录 一、什么是 …...

Java泛型详解

泛型的理解 泛型的概念 所谓泛型&#xff0c;就是允许在定义类、接口时通过一个标识表示类中某个属性的类型 或者是 某个方法的返回值类型及参数类型。这个类型参数将在使用时&#xff08;例如&#xff0c;继承或实现这个接口&#xff0c;用这个类型声明变量、创建对象时&#…...

shell脚本--常见案例

1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件&#xff1a; 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

蓝桥杯 2024 15届国赛 A组 儿童节快乐

P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡&#xff0c;轻快的音乐在耳边持续回荡&#xff0c;小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下&#xff0c;六一来了。 今天是六一儿童节&#xff0c;小蓝老师为了让大家在节…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

Angular微前端架构:Module Federation + ngx-build-plus (Webpack)

以下是一个完整的 Angular 微前端示例&#xff0c;其中使用的是 Module Federation 和 npx-build-plus 实现了主应用&#xff08;Shell&#xff09;与子应用&#xff08;Remote&#xff09;的集成。 &#x1f6e0;️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学&#xff1f;传统医学奠基期&#xff08;远古 - 17 世纪&#xff09;近代医学转型期&#xff08;17 世纪 - 19 世纪末&#xff09;​现代医学成熟期&#xff08;20世纪至今&#xff09; 中医的源远流长和一脉相承远古至…...

佰力博科技与您探讨热释电测量的几种方法

热释电的测量主要涉及热释电系数的测定&#xff0c;这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中&#xff0c;积分电荷法最为常用&#xff0c;其原理是通过测量在电容器上积累的热释电电荷&#xff0c;从而确定热释电系数…...

接口自动化测试:HttpRunner基础

相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具&#xff0c;支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议&#xff0c;涵盖接口测试、性能测试、数字体验监测等测试类型…...