精华内容
下载资源
问答
  • clear all; mFID = fopen(‘C:\Users\WDJR\Desktop\rgba.txt’, ...网上的坑太多,还得自己写代码,图像为rgba格式的数据,但是保存的时候有点小问题,需要隔行隔列读取,先保留这个版本再慢慢调; 结果如下图:

    clear all;
    mFID = fopen(‘C:\Users\WDJR\Desktop\rgba.txt’, ‘r’);
    y=textscan(mFID, '%d ‘)
    y=cell2mat(y);
    m=reshape(y,1920,1080);
    figure(1);
    colormap(gray(256));
    image(m);
    ii=0;jj=0;
    for i=1:4:1920
    ii=ii+1;
    for j=1:4:1080
    jj=jj+1;
    z(ii,jj)= m(i,j);
    end
    jj=0;
    end
    figure(2);
    colormap(gray(256));
    image(z’);
    在这里插入图片描述
    网上的坑太多,还得自己写代码,图像为rgba格式的数据,但是保存的时候有点小问题,需要隔行隔列读取,先保留这个版本再慢慢调;
    结果如下图:
    在这里插入图片描述

    展开全文
  • 灰度图片(例如PGM格式)是常见的一种图片格式,但是不知道大家发现了木有,对于同一幅灰度图片中的同一个像素点,用MATLAB和PhotoShop查看,灰度值居然是不一样的!  如下所示:测试图像名为 test.pgm  (1) 用 ...

         灰度图片(例如PGM格式)是常见的一种图片格式,但是不知道大家发现了木有,对于同一幅灰度图片中的同一个像素点,用MATLAB和PhotoShop查看,灰度值居然是不一样的!

        如下所示:测试图像名为 test.pgm

        (1) 用 Photoshop打开,直接查看 (138 , 133 )处的灰度值

            

      (2) 用 MATLAB读取,查看对应的 ( 133 , 138 )处的灰度值(MATLAB和Photoshop的行列顺序不同)

            

        究竟谁在撒谎?

        为了探究这个问题的答案,我用 VS2010 读取 test.pgm , 采用单步调试的方法查看(133,138)处的灰度值,发现是 102 !

        为了避免巧合,又测试了3个点,都与 MATLAB相同 !

        总结: 对于灰度图片中灰度值的读取,MATLAB是准确的。

    展开全文
  • Matlab读取图像数据并写入TXT

    千次阅读 2019-06-03 14:09:44
    我最近在做嵌入式图像处理,我的任务是:首先要把一幅图像读入matlab,获取每个像素点的灰度值,然后分别在TXT文件中以二进制、十进制和十六进制的数值显示出来。 在matlab中使用imread函数读入一幅图像,得到由...

    我最近在做嵌入式图像处理,我的任务是:首先要把一幅图像读入matlab,获取每个像素点的灰度值,然后分别在TXT文件中以二进制、十进制和十六进制的数值显示出来。

    在matlab中使用imread函数读入一幅图像,得到由图像灰度构成的uint8类型的数值矩阵,然后用fopen、fclose进行文件的读写操作,用printf函数将数值打印到TXT文档中,话不多说,上代码。

    由于图像数据太大,所以先写一个测试程序,这是以十进制形式输出

    %% 测试程序1
    close all;clear;clc;
    mat=uint8(magic(4))
    fid=fopen('F:\TXT测试文件\decimal.txt','wt');  %在1-decimal.txt中写入十进制数据
    COUNT=fprintf(fid,'%d\n',mat');
    fclose(fid);

    因为matlab中图像数据读取时是按列读取和存储,而做图像处理时要按行处理,所以这里我们输出是需要将矩阵mat转置。

    下面是十六进制形式输出

    %% 测试程序2
    close all;clear;clc;
    mat=uint8(magic(4))
    format hex
    fid=fopen('F:\TXT测试文件\hex.txt','wt');  %在1-decimal.txt中写入十六进制数据
    COUNT=fprintf(fid,'%x\n',mat');
    fclose(fid);

    运行结果如下

     

    但是,同样的方法输出二进制数据时却出现了问题。我在这里卡了很久,不怕大家笑话,我在这块在CSDN上找帖子学习,前后花了两周左右,总算初步学懂了几个数据I/O的函数,比如fopen、fprintf、dlmwrite,围绕这个问题还初步了解有cell、fwrite、csvwrite、xslwrite、magic、save等等。有时间再好好总结一下这次的经验,先把作业完成再说。

    我想将这些数据转换成只有01的八位二进制代码,并在TXT文本中显示它们,也像上面一样一个数据一个换行。

     最常用的办法是用matlab中的dec2bin函数,查看它的帮助文件。

    >> help dec2bin
    dec2bin Convert decimal integer to its binary representation
        dec2bin(D) returns the binary representation of D as a character vector.
        D must be a non-negative integer. If D is greater than flintmax, 
        dec2bin might not return an exact representation of D.
     
        dec2bin(D,N) produces a binary representation with at least
        N bits.
     
        Example
           dec2bin(23) returns '10111'

    dec2bin(D)将矩阵D转换成二进制字符串显示,dec2bin(D,N)中N是转换后的位数。

    %% 测试程序3
    close all;clear;clc;
    mat=uint8(magic(4))
    mat1=dec2bin(mat',8)
    dlmwrite('F:\TXT测试文件\binary.txt',mat1,'delimiter','','newline','pc');

     

    测试成功后用真实的图像数据试一试

    clc;clear;close all;
    I=imread('50.jpg');                 %读入八位十进制灰度值0-255
    INFO=imfinfo('50.jpg');
    R=rgb2gray(I);
    %figure,imshow(I),figure,imshow(R);
    
    %% 化成1-0黑白图像
    m=graythresh(R);
    BW1=im2bw(R,m);
    figure,
    subplot(131),imshow(BW1),title('灰度图像分为0和1');
    n=graythresh(I);
    BW2=im2bw(I,n);
    subplot(132),imshow(BW2),title('原图分为0和1');
    subplot(133),imshow(I),title('原图')
    
    %% 以十进制字符串显示
    fid=fopen('F:\360MoveData\Users\asus\Desktop\嵌入式实验\图像处理\1-decimal.txt','wt');   %在1-binary.txt中写入十进制数据
    COUNT=fprintf(fid,'%d\n',R','int');%十进制数据存入TXT
    sta=fclose(fid);
    
    %% 以二进制字符串显示
    B=dec2bin(R');
    dlmwrite('F:\360MoveData\Users\asus\Desktop\嵌入式实验\图像处理\1-binary.txt',B,'delimiter','','newline','pc');
    
    %% 以十六进制字符串显示
    format hex         %只影响数据输出格式,不影响计算和存储
    fid=fopen('F:\360MoveData\Users\asus\Desktop\嵌入式实验\图像处理\1-hex.txt','wt');      %在1-hex.txt中写入十六进制数据
    COUNT2=fprintf(fid,'%x\n',R');
    fclose(fid);

    二进制字符显示那段代码因为数据量比较大的缘故,运行时间较长,具体时间因电脑性能而异。耐心等待一会,生成三个TXT文件,大小分别是1-binary.txt(12.5MB)、1-decimal.txt(6.00MB)、1-hex.txt(4.94MB)。打开后检查,符合要求,成功。

    贴一下sprintf、fprintf的帮助

    sprintf Write formatted data to string or character vector
        STR = sprintf(FORMAT, A, ...) applies FORMAT to all elements of
        array A and any additional array arguments in column order, and returns
        the results as STR. FORMAT can be a character vector or a string
        scalar. The data type of STR is the same as the data type of FORMAT.
     
        [STR, ERRMSG] = sprintf(FORMAT, A, ...) returns an error message when
        the operation is unsuccessful.  Otherwise, ERRMSG is empty.
     
        sprintf is the same as FPRINTF except that it returns the data in a 
        MATLAB variable rather than writing to a file.
     
        FORMAT describes the format of the output fields, and can include 
        combinations of the following:
     
           * Conversion specifications, which include a % character, a
             conversion character (such as d, i, o, u, x, f, e, g, c, or s),
             and optional flags, width, and precision fields.  For more
             details, type "doc sprintf" at the command prompt.
     
           * Literal text to print.
     
           * Escape characters, including:
                 \b     Backspace            ''   Single quotation mark
                 \f     Form feed            %%   Percent character
                 \n     New line             \\   Backslash
                 \r     Carriage return      \xN  Hexadecimal number N
                 \t     Horizontal tab       \N   Octal number N%
             where \n is a line termination character on all platforms.
     
        Notes:
     
        If you apply an integer or text conversion to a numeric value that
        contains a decimal, MATLAB overrides the specified conversion, and
        uses %e to express the value in exponential notation.
     
        Numeric conversions print only the real component of complex numbers.
     
        Examples
           sprintf('%0.5g',(1+sqrt(5))/2)       % 1.618
           sprintf('%0.5g',1/eps)               % 4.5036e+15       
           sprintf('%15.5f',1/eps)              % 4503599627370496.00000
           sprintf('%d',round(pi))              % 3
           sprintf('%s','hello')                % hello
           sprintf('The array is %dx%d.',2,3)   % The array is 2x3.
     
        See also fprintf, sscanf, num2str, int2str, char, string, compose.
    
        sprintf 的参考页
        名为 sprintf 的其他函数
    
    fprintf Write formatted data to text file.
        fprintf(FID, FORMAT, A, ...) applies the FORMAT to all elements of 
        array A and any additional array arguments in column order, and writes
        the data to a text file.  FID is an integer file identifier.  Obtain 
        FID from FOPEN, or set it to 1 (for standard output, the screen) or 2
        (standard error). fprintf uses the encoding scheme specified in the
        call to FOPEN.
     
        fprintf(FORMAT, A, ...) formats data and displays the results on the
        screen.
     
        COUNT = fprintf(...) returns the number of bytes that fprintf writes.
     
        FORMAT is a string that describes the format of the output fields, and
        can include combinations of the following:
     
           * Conversion specifications, which include a % character, a
             conversion character (such as d, i, o, u, x, f, e, g, c, or s),
             and optional flags, width, and precision fields.  For more
             details, type "doc fprintf" at the command prompt.
     
           * Literal text to print.
     
           * Escape characters, including:
                 \b     Backspace            ''   Single quotation mark
                 \f     Form feed            %%   Percent character
                 \n     New line             \\   Backslash
                 \r     Carriage return      \xN  Hexadecimal number N
                 \t     Horizontal tab       \N   Octal number N
             For most cases, \n is sufficient for a single line break.
             However, if you are creating a file for use with Microsoft
             Notepad, specify a combination of \r\n to move to a new line.
     
        Notes:
     
        If you apply an integer or string conversion to a numeric value that
        contains a fraction, MATLAB overrides the specified conversion, and
        uses %e.
     
        Numeric conversions print only the real component of complex numbers.
     
        Example: Create a text file called exp.txt containing a short table of
        the exponential function.
     
            x = 0:.1:1;
            y = [x; exp(x)];
            fid = fopen('exp.txt','w');
            fprintf(fid,'%6.2f  %12.8f\n',y);
            fclose(fid);
     
        Examine the contents of exp.txt:
     
            type exp.txt
     
        MATLAB returns:
               0.00    1.00000000
               0.10    1.10517092
                    ...
               1.00    2.71828183
     
        See also fopen, fclose, fscanf, fread, fwrite, sprintf, disp.
    
        fprintf 的参考页
        名为 fprintf 的其他函数

    dlmwrite参见博客1

    思考:如何把二维矩阵变成一维,有直接变换的函数吗?

    展开全文
  • Matlab读取Dicom格式医学图像

    千次阅读 热门讨论 2018-12-17 18:09:24
    I=dicomread('I:/CT_image/***.IMA'); %读取图像 metadata = dicominfo(I); %显示图像的存储信息 imagesc(I);...注:imshow(I,[]) 显示灰度图像 I,根据 I 中的像素值范围对显示进行转换。ims...
    I=dicomread('I:/CT_image/***.IMA');   %读取图像
    metadata = dicominfo(I);  %显示图像的存储信息
    imagesc(I);      %显示出的是彩色图像
    imshow(I, []);   %显示灰度图像,注意一定要加 [] 

    注:imshow(I,[]) 显示灰度图像 I,根据 I 中的像素值范围对显示进行转换。imshow 使用 [min(I(:)) max(I(:))] 作为显示范围。imshow 将 I 中的最小值显示为黑色,将最大值显示为白色。

    展开全文
  • 基于matlab读取图像文件并,并计算其图像... 计算公式采用:各中心像素灰度值与周围8近邻像素灰度值之差的平方之和再除以差的个数。 注:直接运行,选取路径即可输出计算结果,十分方便。适用于大量图片待计算时使用
  • matlab 读取图片 矩阵含义

    千次阅读 2012-08-01 14:33:57
    这个三维数组有三个面,依次对应于红(Red)、绿(Green)、蓝(Blue)三种颜色,而面中的数据则分别是这三种颜色的强度,面中的元素对应于图像中的像素点。设所得矩阵为X三维矩阵(256,256,3) ,X(:,:,1)代表红颜色
  • Matlab之图像像素运算(五)

    千次阅读 2020-03-08 15:51:50
    了解了基本的图像文件的读取处理...它将输入图像映射为输出图像,输出图像每个像素点的灰度值仅由对应的输入像素点的灰度值决定,运算结果不会改变图像内像素点之间的空间关系,其运算的数学关系式: B(x,y)= f[A(x,...
  • test2.m:利用matlab将图片转为28*28像素 test3.m:完成灰度化与二化处理 运行完前两个文件,图片的预处理就算成功了 也可以使用opencv.py:利用opencv对图片就行预处理 图片实例:包含官方数据集和自己的手写数据集...
  • MATLAB实现图像的读取、写入、显示

    千次阅读 2019-11-03 19:37:35
    数字图像:当x,y和灰度值f是有限的离散数值时,称该图像为数字图像。 数字图像处理:借助数字计算机来处理数字图像。 图画元素/图像元素/像素:有限数量的像素构成了数字图像,这些像素都有特定的位置和幅值。 ...
  • 二值图像是指在图像中,灰度等级只有两种,也就是说,图像中的任何像素点的灰度值均为0或者255,分别代表黑色和白色。 在图像处理中,常用的二值图像是‘.TIF’格式的。这种格式的文件,每一个像素只由1比特的 0 ...
  • 灰度直方图是对图像中灰度级分布的统计,横坐标为灰度值,纵坐标是像素个数(也可以采用当前像素值个数占总像素个数的百分比)。这里直接统计个数。1. matalb代码如下:%画灰度直方图 %1, 读取图像 clc; clear; ...
  • matlab对图像进行二

    千次阅读 2019-04-27 22:12:16
    I=imread('1.jpg'); %读取图像 thresh = graythresh(I) %自动确定二化阈值;... % thresh=0.5 表示将灰度等级在128以下的像素全部变为黑色,将灰度等级在128以上的像素全部变为白色。 imshow(A) ...
  • 基于matlab读取图像文件并,并计算其图像...计算公式采用:各中心像素灰度值与周围8近邻像素灰度值之差的平方之和再除以差的个数。 注:直接运行,选取路径即可输出计算结果,十分方便。适用于大量图片待计算时使用。
  • 图像增强的目的: 图像增强的目标是通过处理图像,提高图像...点运算即输出的像素灰度值仅仅由输入的像素灰度值决定: Out[x, y] = f (In[x, y]); 线性点运算 例:读取 dicom 图像,完成以下操作: 利用线性函
  • MATLAB06:数字图像处理

    万次阅读 多人点赞 2019-11-18 13:15:09
    文章目录MATLAB06:数字图像处理图像的读取和展示图像在MATLAB中的存储格式读取和展示图像图像的点运算图像的四则运算像素的统计分布 MATLAB06:数字图像处理 图像的读取和展示 图像在MATLAB中的存储格式 MATLAB能够...
  • 1.2 MATLAB读取方法 6 1.2.1 编辑M文件 6 1.2.2图像的读取 7 1.2.3查看图像的格式 8 2数据统计处理 10 2.1各像素灰度值的均值 10 2.1.1原理介绍 10 2.1.2程序执行及其结果 10 2.2 各像素灰度值的标准差 11 ...
  • 1 图像的表示方法 常见的5种图像表示方法:分别是二进制图像,...利用三个大小相同的二维数组表示,3个数组分别代表R G B这三个分量,每种颜色分量占8位,每一位由[0,255]中的任意表示,那么一个像素由24位表示。 2
  • 读取一副图像如果是彩色图则转化为灰度图对得到的灰度图做如下处理 1将灰度值大于200的像素值全部设置为200 2将灰度值小于100的像素值全部设置为100 3比较原图和经过步骤1和2处理后得到的图的差异 答 %原图的读入 ...
  • f(x,y)=greylevel,其中灰度像素,是由比特组成的数字。 例如,256 级灰度图像中每个像素的强度由 8 位组成。 因此,一个 8 位图像可以被认为是由 8 个 1 位平面组成,平面 1 包含最低位,平面 8 是图像中所有...
  • RGB图像转化为灰度图原理

    千次阅读 2020-11-22 23:16:26
    利用MATLAB对图像进行读取,可以知道存储RGB图像数据为2562563 uint8,其中256*256表示长和宽的像素个数,3表示红绿蓝三个分量图像,uint8表示每个分量图像(R、G、B)的像素的位宽为8比特,即可表示0-255的范围...
  • Matlab处理图像的一般方法

    千次阅读 2015-04-06 22:03:39
    Matlab是强大的数学问题处理软件,同时也是图像处理强有力的工具。本文通过几个实例具体介绍Matlab...支持JPG,PNG,BMP和TIF等各种格式的图片,读取后的imageName是一个uint8类型的矩阵,其元素为图像像素点的灰度
  • 值得一提的是,这个二化是对每一层的颜色单独二化,如果想要实现阈值效果,可以直接使用阈值功能或者转化为灰度图之后再使用对话框内的二化,效果是一样的。 除此之外还有一个边缘提取功能,就是形态学处理中...
  • MATLAB图形图像处理

    热门讨论 2011-01-03 12:20:11
    13.1.1 像素值及其统计特性 13.1.2 直方图灰度变换 13.1.3 直方图均衡化 13.1.4 直方图规定化 13.2 空域滤波增强 13.2.1 平滑滤波器 13.2.2 锐化滤波器 13.3 频域增强 13.3.1 低通滤波器 13.3.2 高通滤波器...
  • Harbin Institute of Technology 图像工程导论 课程名称 图像工程导论 设计题目图像检测直线提取 院 系 班 级 设 ...课题设计思路 读取图片后将其转化为灰度图后记为二图像对其进行边缘检测后通过霍夫变换检测直线并
  • VC++ matlab图像处理

    2013-09-15 15:17:54
    13.1.1 像素值及其统计特性 13.1.2 直方图灰度变换 13.1.3 直方图均衡化 13.1.4 直方图规定化 13.2 空域滤波增强 13.2.1 平滑滤波器 13.2.2 锐化滤波器 13.3 频域增强 13.3.1 低通滤波器 13.3.2 高通滤波器...
  • Matlab初级图像处理

    2021-03-06 17:20:20
    读取图像,此时I为像素矩阵,彩色图像。 I=imread('lena.tiff'); 彩色图片转化为灰度图像 grayImg=rgb2gray(I); 图片上下翻转,灰度图像翻转结果为一张图像,RGB图像翻转结果则为三张图片。 upToDownImg=...
  • matlab 图像压缩及变换

    2017-12-07 10:07:30
    1.读取自然图像、生成合成图像、高相关图像、高去相关图像,调用yasuo.m函数,完成压缩,并显示不同像素值的图像 2.读取自然图像、生成合成图像、高相关图像、高去相关图像,调用yasuo.m函数,完成压缩,并显示不同...
  • 1、读取图片函数imread()im=imread('00001.jpg')输出结果w*h*channel,且为unit8型,像素值为0-255区间2、读取图片函数im2double()im1=im2double('im')输出结果为double型,像素值为0-1区间,这里可参考类型转换 ...
  • DICOM图像操作dicom图像读取dicom图像存为bmp格式dicom图像调节尺寸 dicom图像读取 I=dicomread(‘filename’);...注:imshow(I,[]) 显示灰度图像 I,根据 I 中的像素值范围对显示进行转换。iimshow 将 I 中的

空空如也

空空如也

1 2 3
收藏数 54
精华内容 21
关键字:

matlab读取像素灰度值

matlab 订阅