用matlab求出两个图片的压缩失真函数MSE
时间: 2024-05-16 17:12:40 浏览: 21
MSE(Mean Squared Error)是衡量图像压缩失真程度的重要指标之一,可以用MATLAB计算。以下是计算MSE的步骤:
1. 读入两幅图像,假设为img1和img2,分别用imread函数读入。
```
img1 = imread('image1.jpg');
img2 = imread('image2.jpg');
```
2. 将两幅图像转为灰度图像,用rgb2gray函数实现。
```
img1 = rgb2gray(img1);
img2 = rgb2gray(img2);
```
3. 计算两幅图像的MSE值。MSE值的计算公式为:
```
MSE = sum(sum((img1-img2).^2))/(M*N);
```
其中,M和N分别表示图像的高和宽,.^2表示对差值求平方,sum函数用于将矩阵的元素相加。
```
[M, N] = size(img1);
MSE = sum(sum((img1-img2).^2))/(M*N);
```
4. 显示MSE值。
```
fprintf('MSE = %f\n', MSE);
```
相关问题
matlab信息率失真函数
以下是MATLAB中计算信息率失真函数的示例代码:
```matlab
% 定义原始信号
x = [1 2 3 4 5 6 7 8 9 10];
% 定义失真信号
y = [1 2 3 4 5 6 7 8 9 0];
% 计算失真率
distortion = immse(x, y);
% 显示失真率
disp(['失真率为:', num2str(distortion)]);
```
上述代码中,我们首先定义了原始信号x和失真信号y,然后使用MATLAB内置函数immse计算两个信号之间的均方误差(MSE),即失真率。最后,我们使用disp函数将失真率输出到命令窗口中。
用一均匀量化器对零均值、单位方差的高斯源进行量化,这个量化器在区间[-10,10]内均今量化。假定量化电平设在各量化区域的中间点,求出并画出量化电平数为 N=3,4,5,6,7,8,9 和 10 时,量化产生的均方失真作为量化电平数 N的函数图的量化原理图,调制原理图,解调原理图各自的matlab程序源代码是什么?,
量化原理图:
```matlab
% 零均值、单位方差的高斯源
mu = 0;
sigma = 1;
% 量化电平数
N = [3, 4, 5, 6, 7, 8, 9, 10];
% 量化区间
q = linspace(-10, 10, N(end)+1);
% 量化电平
v = (q(1:end-1) + q(2:end)) / 2;
% 量化步长
delta = q(2) - q(1);
% 生成高斯信号
x = mu + sigma * randn(1, 10000);
% 量化
for i = 1:length(N)
y = quantize(x, delta, v(1:i));
% 计算均方失真
D(i) = mean((y - x).^2);
end
% 画出均方失真作为量化电平数 N 的函数图
plot(N, D);
xlabel('N');
ylabel('MSE');
function y = quantize(x, delta, v)
% 一均匀量化器
y = delta * floor(x / delta + 0.5);
% 量化电平
for i = 1:length(v)
y(abs(x - v(i)) < delta/2) = v(i);
end
end
```
调制原理图:
```matlab
% 零均值、单位方差的高斯源
mu = 0;
sigma = 1;
% 量化电平数
N = 8;
% 量化区间
q = linspace(-10, 10, N+1);
% 量化电平
v = (q(1:end-1) + q(2:end)) / 2;
% 量化步长
delta = q(2) - q(1);
% 生成高斯信号
x = mu + sigma * randn(1, 10000);
% 量化
y = quantize(x, delta, v);
% 调制
s = zeros(1, length(y));
for i = 1:length(v)
s(y == v(i)) = i;
end
% 画出调制后的信号
stairs(s);
xlabel('Time');
ylabel('Amplitude');
function y = quantize(x, delta, v)
% 一均匀量化器
y = delta * floor(x / delta + 0.5);
% 量化电平
for i = 1:length(v)
y(abs(x - v(i)) < delta/2) = v(i);
end
end
```
解调原理图:
```matlab
% 零均值、单位方差的高斯源
mu = 0;
sigma = 1;
% 量化电平数
N = 8;
% 量化区间
q = linspace(-10, 10, N+1);
% 量化电平
v = (q(1:end-1) + q(2:end)) / 2;
% 量化步长
delta = q(2) - q(1);
% 生成高斯信号
x = mu + sigma * randn(1, 10000);
% 量化
y = quantize(x, delta, v);
% 调制
s = zeros(1, length(y));
for i = 1:length(v)
s(y == v(i)) = i;
end
% 解调
r = v(s);
% 画出解调后的信号
plot(r);
xlabel('Time');
ylabel('Amplitude');
function y = quantize(x, delta, v)
% 一均匀量化器
y = delta * floor(x / delta + 0.5);
% 量化电平
for i = 1:length(v)
y(abs(x - v(i)) < delta/2) = v(i);
end
end
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![.zip](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![.zip](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)