202212-3-JPEG 解码

这里是引用在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

我发现csp的题目都特别长 跟小作文似的
然后本地通过了但是放到系统里面就会被判定零分

#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;

int main() {
	int Q[10][10];
	int M0[10][10], M1[10][10];
	double M2[10][10];
	int n, t;
	int count = 0;
	//量化矩阵Q,初始化M
	for (int i = 0; i < 8; i++) {
		for (int j = 0; j < 8; j++) {
			cin >> Q[i][j];
			M0[i][j] = 0;
			M1[i][j] = 0;
		}
	}
	cin >> n >> t;
	//读入数据
	for (int k = 0; k <= 14; k++) {
		if (count > n) break;
		for (int i = 0; k - i >= 0&&count<n; i++) {
			if (k % 2 == 0) {
				cin >> M0[k - i][i];
				count++;
			}
			else {
				cin >> M0[i][k - i];
				count++;
			}
		}
	}
	//乘以量化矩阵
	for (int i = 0; i < 8; i++) {
		for (int j = 0; j < 8; j++) {
			M1[i][j] = Q[i][j] * M0[i][j];
		}
	}
	//离散余弦逆变换
for (int i = 0; i < 8; i++) {
	for (int j = 0; j < 8; j++) {
		M2[i][j] = 0.0;
			for (int u = 0; u <=7; u++) {
				for (int v = 0; v <= 7; v++) {
					if (u == 0 && v == 0)
					M2[i][j] += (double)M1[u][v] * cos(0) * cos(0) / 2.0;
					else if (u == 0)
					M2[i][j] += (double)M1[u][v] * sqrt(0.5) * cos(acos(-1) * (i + 0.5) * double(u)/8.0) * cos(acos(-1) * (j + 0.5) * double(v) / 8.0);
					else if(v==0) 
					M2[i][j] += (double) M1[u][v] * sqrt(0.5)* cos(acos(-1)  * (i + 0.5) * double(u) / 8.0) * cos(acos(-1)  * (j + 0.5) * double(v) / 8.0);
					else 
						M2[i][j] += M1[u][v] * cos(acos(-1) * (i + 0.5) * double(u) / 8.0) * cos(acos(-1)  * (j + 0.5) * double(v) / 8.0);
						}
					}
			M2[i][j] = M2[i][j] / 4.0;
			M2[i][j] = round(M2[i][j] +128);
			if (M2[i][j] > 255) {
				M2[i][j] = 255;
			}
			else if (M2[i][j] < 0) {
				M2[i][j] = 0;
			}
		}
	}
//输出		
for (int i = 0; i < 8; i++) {
	for (int j = 0; j < 8; j++) {
		if(t==2) cout << M2[i][j] << " ";
		if(t==1) cout << M1[i][j] << " ";
		if(t==0) cout << M0[i][j] << " ";
	}
	cout << endl;
}
	return 0;
}

不清楚为什么判定零分,但本地就是对的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: FODICOM是一个医学图像格式,它使用JPEG-LS作为其图像编码和解码的标准。JPEG-LS是一种专为无损和有损压缩的图像编码算法。要解码FODICOM JPEG-LS图像,需要执行以下步骤。 首先,从FODICOM文件中获取JPEG-LS编码的图像数据。这些数据以二进制的方式存储在文件中。 接下来,根据JPEG-LS算法中的压缩步骤,对图像数据进行解压缩。这包括反量化、反预测和反差分编码等过程。通过这些步骤,可以还原出原始的灰度或彩色图像数据。 然后,将解压缩后的图像数据转换为适当的像素格式。例如,如果图像是灰度的,则将数据转换为8位灰度像素;如果图像是彩色的,则将数据转换为RGB像素。 最后,将像素数据渲染成可视化的图像。可以使用计算机图形库或处理图像的软件工具来实现渲染过程。渲染后的图像可以在计算机屏幕上显示或保存为其他格式,如BMP、PNG或JPEG。 总而言之,FODICOM JPEG-LS解码涉及从FODICOM文件中获取图像数据,解压缩数据,转换为适当的像素格式,并最终渲染可视化图像。以上所述的步骤可以使用编程语言或图像处理软件来实现。 ### 回答2: fodicom是医学图像处理方面的开源库,而jpeg-ls是一种用于有损压缩的图像编码和解码算法。下面我来介绍一下fodicom的jpeg-ls解码过程。 首先,fodicom库会读取存储在DICOM格式中的jpeg-ls压缩图像数据。DICOM是医学图像存储和传输的标准格式,而jpeg-ls则是其中一种常用的压缩算法解码的第一步是扫描jpeg-ls编码图像数据,然后解析压缩图像的各个参数。这些参数包括图像的宽度、高度、颜色通道数等信息。 接下来,fodicom会根据jpeg-ls的编码方式来解码图像数据。jpeg-ls算法的核心是基于预测的无损压缩技术,它使用差值来表示图像中的像素值,从而减少数据存储和传输的大小。解码过程中,fodicom会根据预测模型对差值进行计算和还原,最终得到原始的像素值。 解码完成后,fodicom会将解码后的图像数据存储在内存中,以便后续的图像处理和分析。用户可以通过调用fodicom提供的接口,对解码后的图像数据进行进一步的操作,例如显示、保存或者进行图像特征提取等。 总结来说,fodicom的jpeg-ls解码是一个将DICOM格式中存储的jpeg-ls压缩图像数据进行解析并恢复原始像素值的过程。这个过程涉及到图像参数解析、差值计算和图像数据还原等步骤,最终得到的是可以在计算机上进行进一步分析和处理的原始图像数据。 ### 回答3: Fodicom是一种用于医学图像传输和存储的传输协议,而JPEG-LS是一种无损压缩算法。当我们需要解码Fodicom中的JPEG-LS图像时,我们需要以下步骤: 1. 解析Fodicom文件:首先,我们需要解析Fodicom文件,提取出图像数据所在的位置和压缩参数等信息。这些信息通常在文件的头部或标签中存储。 2. 解压缩JPEG-LS数据:将提取出的JPEG-LS数据进行解压缩。JPEG-LS是一种无损压缩算法,可以还原原始图像数据。解压缩算法通常使用查找表和预测算法来还原图像数据。 3. 还原图像:解压缩后的数据是原始图像的像素值,但还不是可视化的图像。我们需要将这些像素值转换为图像的RGB(红绿蓝)通道,以便可以正确显示图像。 4. 显示图像:将还原的图像数据显示在屏幕上或保存为文件。这可以通过使用图像处理库或编写自定义代码实现。 需要注意的是,Fodicom中可能包含其他的图像编码格式,例如JPEGJPEG2000等。因此在解码Fodicom图像时,我们需要根据文件的标识信息判断图像的编码格式,并根据对应的解码算法进行处理。 总结起来,Fodicom JPEG-LS解码的过程包括解析Fodicom文件、解压缩JPEG-LS数据、还原图像和显示图像。这些步骤可以通过使用相应的库或编写自定义代码来实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值