阅读和重建图像的像素值

3视图(30天)
浩史
浩史 2018年7月14日
编辑: 为副总经理 2022年8月3日
你好!我想读一个图像的像素值和重建后,但新形象的表现是不同的,虽然形状是相似的。
你能帮我解决这个问题吗?非常感谢。
附件是我的代码。
清晰;
clc;
(文件,路径)= uigetfile (‘* .tif‘,'请选择您的文件:,
“多选”,“上”);
fid = imread(文件);
大小(m, n, k) = (fid);
Num_scan = 1;
x = 1: m
y = 1: n
RGB = impixel (fid, x, y);
照片(Num_scan 1) = x;
照片(Num_scan, 2) = y;
A_Pix0 (Num_scan, 1) = RGB (1);
A_Pix0 (Num_scan, 2) = RGB (2);
A_Pix0 (Num_scan, 3) = RGB (3);
Num_scan = Num_scan + 1;
结束
结束
A_Pix =重塑(A_Pix0 [n m 3]);
图像(A_Pix)
以下是原始图像和新形象。

接受的答案

沃尔特·罗伯森
沃尔特·罗伯森 2018年7月14日
你应该使用
A_Pix0 = 0 (n * m 3类(fid));
1评论
浩史
浩史 2018年7月14日
谢谢你这么多!它的工作原理!

登录置评。

答案(1)

图像分析
图像分析 2018年7月14日
编辑:图像分析 2018年7月14日
我不知道为什么你打开一个tiff格式文件,并试图读取并重建一个像素。只是打开它tif图像和复制:
[baseFileName,文件夹]= uigetfile (‘* .tif‘,'请选择您的文件:,“多选”、“关闭”);
fullFileName = fullfile(文件夹,baseFileName);
image1 = imread (fullFileName);
A_pix = image1;
同时,支撑材常用文件标识,或fopen()返回的文件句柄。你应该选择一个名字像rgbImage支撑材,而是因为它是混乱的,至少它困惑我,直到我终于找到了你在做什么。
顺便说一下你 错误- - - - - - 令人困惑的行和列的x和y。数组索引(行、列), (x, y)。
这种错误出现 另一个常见的错误- - - - - - 选择non-descriptive单字母变量名像m, n, x, y, i, j,等。注意m是真的行但你有x(水平指定)从1行而不是1列?修正如下:
(行、列,numberOfColorChannels) =大小(rgbImage)
坳= 1:列
行= 1:行
3评论
为副总经理
为副总经理 2022年8月3日
编辑:为副总经理 2022年8月3日
如果你想做的 同样的事情 什么原文,那么你是幸运的,因为它基本上没有。
%这是原始代码。
%这段代码非常缓慢,需要超过15分钟
%处理384 x512形象
fid = imread (“peppers.png”);
fid = fid (1:10, 1:10:);%没有意义浪费时间一事无成
大小(m, n, k) = (fid);
Num_scan = 1;
x = 1: m
y = 1: n
RGB = impixel (fid, x, y);
照片(Num_scan 1) = x;
照片(Num_scan, 2) = y;
%重塑图像分成三栏矩阵
A_Pix0 (Num_scan, 1) = RGB (1);
A_Pix0 (Num_scan, 2) = RGB (2);
A_Pix0 (Num_scan, 3) = RGB (3);
Num_scan = Num_scan + 1;
结束
结束
A_Pix =重塑(A_Pix0 [n m 3]);%的图像只是重塑回来
%这本质上是一样的
inpict = imread (“peppers.png”);
inpict = inpict (1:10, 1:10:);%使用相同的图像区域
[m, n, ~] =大小(inpict);
[xx yy] = meshgrid (1: n, 1: m);
allpixindices = (xx (:) yy (:));%一堆指数由于某种原因
outpict = inpict;%的代码实现图像没有任何变化
allpixindices isequal(沥青)%索引数组是相同的
ans =逻辑
1
isequal(双(A_Pix), outpict)%的图片是相同的
ans =逻辑
1
我假设大多数人不需要帮助编写一个图像处理脚本,accompishes完全零改变的图像数据,所以你不能后 同样的事情 那OP想要的。创建一个新的图像从一个旧的图像可能是其中最模糊的图像处理,可以设想的描述。没有人可以给你定制代码来完成特定的任务,如果任务不能被描述。
如果你的目标是仅仅改变图像像素元组的列表,然后使用重塑()和交换()必要时得到任何你想要的方向。
[],pixtable =重塑(inpict大小(inpict, 3))
pixtable = 100×3
62 29 64 63 31 62 65 29 63 29 62 32 63 31 62 63 61 62 66 63 65 29 65 62 30 61 29 61

登录置评。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!