- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
将 JPEG 图像保存到 iOS 照片库时有一个奇怪的变化。我不知道我是否做错了什么。我正在使用 libjpeg-turbo 访问 JPEG 图像,然后修改图像的 DCT 系数。修改后的图像(仅在 DCT 中,没有其他)保存在照片库中。但是打开保存的图像后,DCT系数与我在上一步中更改的不一样。
让我详细解释一下我是如何为每个 DCT 添加 +1 的。我正在使用 libjpeg 库的“example.c”中的标准程序:
struct jpeg_decompress_struct cinfo;
struct my_error_mgr jerr;
FILE * infile;
if ((infile = fopen(filename, "rb")) == NULL) {
fprintf(stderr, "can't open %s\n", filename);
return 0;
}
cinfo.err = jpeg_std_error(&jerr.pub);
jerr.pub.error_exit = my_error_exit;
if (setjmp(jerr.setjmp_buffer)) {
jpeg_destroy_decompress(&cinfo);
fclose(infile);
return 0;
}
jpeg_create_decompress(&cinfo);
jpeg_stdio_src(&cinfo, infile);
(void) jpeg_read_header(&cinfo, TRUE);
jvirt_barray_ptr* coeffs_array;
coeffs_array = jpeg_read_coefficients(&cinfo);
BOOL done = FALSE;
for (int ci = 0; ci < 3; ci++)
{
JBLOCKARRAY buffer_one;
JCOEFPTR blockptr_one;
jpeg_component_info* compptr_one;
compptr_one = cinfo.comp_info + ci;
for (int by = 0; by < compptr_one->height_in_blocks; by++)
{
buffer_one = (cinfo.mem->access_virt_barray)((j_common_ptr)&cinfo, coeffs_array[ci], by, (JDIMENSION)1, FALSE);
for (int bx = 0; bx < compptr_one->width_in_blocks; bx++)
{
blockptr_one = buffer_one[0][bx];
for (int bi = 0; bi < 64; bi++)
{
blockptr_one[bi]++;
}
}
}
}
write_jpeg(output, &cinfo, coeffs_array); // saving modified JPEG to the output file
jpeg_destroy_decompress(&cinfo);
fclose(infile);
在此之后,我在文件中保存了一个新的 JPEG 图像,假设为“new.jpg”。现在我想将这个“new.jpg”保存到照片库中,所以我通过以下方式加载图像:
imageToSave = [UIImage imageWithContentsOfFile:outputFile];
我还检查了 DCT 系数是否保持不变。在我检查修改后的 DCT 后得到相同的图像,然后我将保存它:
UIImageWriteToSavedPhotosAlbum(imageToSave, nil, nil, nil);
图片“new.jpg”现在保存在图片库中。
到现在为止,一切都很好,DCT 系数的工作方式与 libjpeg 库一样。当我再次加载保存的图像并查看 DCT 系数时,变化就出现了。我发现 DCT 发生了变化,但我不知道为什么。当你想保存 JPEG 图像时,iOS 是否使用任何优化算法?为什么 DCT 会发生变化。
我正在使用以下过程来读取保存的图像:
NSData *jpegData = UIImageJPEGRepresentation([info objectForKey:UIImagePickerControllerOriginalImage], 1);
[jpegData writeToFile:file atomically:YES]; // saved image is saved in file and I can use the procedure from above to check DCTs
此外,这是一个原始 DCT 的示例,通过对所有 DCT 添加 +1 修改 DCT,并在将其保存到照片库后加载一个 8x8 block 的 DCT:
Original DCTs:
-759 -24 -8 1 -1 0 0 1
56 -27 -10 1 0 1 0 0
8 0 0 0 0 -1 0 0
0 0 0 -1 0 -1 0 -1
0 0 0 1 0 0 0 0
0 0 0 1 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 -1 0 0 0 0
Modified DCTs by libjpeg:
-758 -23 -7 2 0 1 1 2
57 -26 -9 2 1 2 1 1
9 1 1 1 1 0 1 1
1 1 1 0 1 0 1 0
1 1 1 2 1 1 1 1
1 1 1 2 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 0 1 1 1 1
DCTs after saving JPEG to photo library:
-758 -22 -7 2 0 0 0 0
58 -26 -8 3 0 0 0 0
8 2 0 0 -1 1 0 0
2 3 0 0 0 0 0 0
2 1 -1 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 -1
如有任何帮助,我们将不胜感激。我真的不知道为什么在将图像保存到照片库后 DCT 会发生变化。
最佳答案
当您使用 UIImage 及其方法时,iOS 将始终重新压缩您的 JPEG,从而改变 DCT。相反,使用 AssetsLibrary 将用户的图片存储和检索为 NSData。此行为未记录,但有效。
我还建议将 .jpeg 存储在临时文件夹中,然后将其提供给 libjpeg-turbo。
关于ios - JPEG 保存到 ios 照片库后 DCT 系数发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13799147/
我已经训练了一个线性回归模型来以多输出方式进行预测。这是一个时间序列预测问题,根据一组输入来估计 future 12 个月的需求。在过去 - 如果我只预测一个输出值 - 我会简单地调用以下命令来访问模
我的应用程序对原始音频信号执行FFT(所有麦克风读数均为values中的16位整数值,即1024个单元)。它首先根据16位对读数进行归一化。然后提取频率为400Hz的幅度。 int sample_ra
我从包含相同语音内容的两个大约 30 秒的音频文件中提取了两个系列 MFCC 系数。音频文件从不同来源录制在同一位置。应该估计音频是否包含相同的对话或不同的对话。目前我已经测试了两个Mfcc系列的相关
我正在尝试使用两个自变量(批处理和方法)和一个因变量 (conc) 运行线性回归。当我运行回归时,我得到一个系数的 NA 值。当我更改模型中自变量的顺序时,NA 值显示为不同的变量。这是一个可重现的数
我想要的,大图:我想知道如何在 Java 中模仿 Mathematica 的 ExtendedGCD[...] 功能。有关该功能的信息可以在 here 中找到,但为了完整起见,我将对其进行简要描述。
我用 R 编写了这个套索代码,并且得到了一些 beta 值: #Lasso library(MASS) library(glmnet) Boston=na.omit(Boston) x=model.m
我有一个幅频响应点列表。振幅以分贝为单位给出。 任务是将此 AFR 列表导出为某些硬件 DSP 设备的一组系数。我知道此设备的文件格式。该设备的规范表明它需要 12288 个系数,并且 DSP 有 2
是否可以替换 lm 对象中的系数? 我认为以下会起作用 # sample data set.seed(2157010) x1 <- 1998:2011 x2 <- x1 + rnorm(length(
我正在尝试使用 lm.ridge 方法执行岭回归。我的问题是如何获得拟合模型的系数?我从调用中得到不同的结果: 模型$coef 系数(模型) 哪个是正确的?另外,为什么我从调用中得到不同的结果: co
以下代码片段死于 Eigen 断言: MatrixXd L; VectorXd x, b; ... ASSERT_MATRIX_EQ(L*x, b); 与, template void ASSERT
有没有办法从编码的图像和视频中轻松提取 DCT 系数(和量化参数)?任何解码器软件都必须使用它们来解码 block DCT 编码的图像和视频。所以我很确定解码器知道它们是什么。有没有办法将它们暴露给使
如何找到矢量 w 是多少,即垂直于分离平面? 最佳答案 我就是这样做的here .如果我没记错的话,这是基于 dual form 的SVM 优化的结果。 model = svmtrain(...);
我是 FFMPEG 的新手。我知道如何提取关键帧, 但现在我想提取那些 I 帧的 DC 系数。 您能否帮助编写 FFMPEG 命令的正确语法以获取 DC 系数? 问候 最佳答案 FFmpeg 命令不会
任何人都可以共享任何代码或可调用以从 HEVC 比特流中提取变换系数 (DCT/DST) 的函数吗? 我检查了 HM 16.0 的源代码。文件\source\Lib\TLibCommon\TComTr
我需要从 MPEG4 视频中提取有关运动矢量和 DC 系数的信息。我搜索了相关站点和主题,发现一个好的解决方案是使用 ffmpeg 编解码器的代码。尤其是 libavcodec/mpegvideo.c
我想删除sympy符号表达式中等于1的任何系数,例如:我希望 1.0x**2 成为 x**2 ,有办法做到吗?另外,如果可能的话,可以对整数进行舍入,例如将 2.0x**2 变为 2*x**2 最佳答
我想删除sympy符号表达式中等于1的任何系数,例如:我希望 1.0x**2 成为 x**2 ,有办法做到吗?另外,如果可能的话,可以对整数进行舍入,例如将 2.0x**2 变为 2*x**2 最佳答
我最近的任务是将 PMML 解析回 R 模型。 (我进行了广泛搜索,没有库可以为您进行这种转换。)我正在尝试将包含多项逻辑回归的 PMML 转换回 R 模型,但我不知道如何转换任何PMML 文档中保存
当使用 pandas statsmodels 的 .summary() 函数时,OLS 回归结果包括以下字段。 coef std err t P>|t| [
我正在 STM32F4 微 Controller 上使用 CMSIS 库开发 PID Controller 。我实在无法理解PID参数的归一化。现在我有了 PID Controller 的三个 Kp、
我是一名优秀的程序员,十分优秀!