精华内容
下载资源
问答
  • 以下是变换功能的函数:负片变换、对数变化、gamma变换和对比度拉伸变换functiong=intrans(f,varargin)%INTRANS Performs intensity (gray-level) transformations.%G=INTRANS(F,'neg') computes the negative of ...

    以下是变换功能的函数:负片变换、对数变化、gamma变换和对比度拉伸变换

    function  g=intrans(f,varargin)

    %INTRANS Performs intensity (gray-level) transformations.

    %G=INTRANS(F,'neg') computes the negative of input image F.

    %

    %G=INTRANS(F,'log',C,CLASS) computes C*log(1+F) and

    %multipies the result by (positive) constant C.If the last two

    %parameters are omitted,C defaults to 1.Because the log is used

    %frequently to dispiay Frourier spectra,parameter CLASS offers the

    %option to specify the class of the output as 'uint8' or

    %'unit16'.If parameter CLASS is omitted,the output is of the

    %same class as the input.

    %

    %G=INTRANS(F,'gamma',GAM) Performs a gamma transformation on

    %the input image using parameter GAM (a required input).

    %

    %G=INTRANS(F,'stretch',M,E) computes a contrast-stretching

    %transformation using the expression 1./(1+(M./(F+eps)).^E).

    %parameter M must be in the range [0,1].The default value for M is

    %mean2(im2double(F)),and the default value for E is 4.

    %

    %For the 'neg','gamma',and 'stretch' transformations,double input

    %image whose maximun value is greater than 1 are scaled first using

    %MAT2GRAY.Other image are converted to double first using IM2DOUBLE,

    %For the 'log' transformation,double image are transformed without being

    %scaled;other images are converted to double first using IM2DOUBLE.

    %

    %The output is of the same class as the input,except if a different class

    %is specified for the 'log' option.

    %Verify the correct number of inputs.

    error(nargchk(2,4,nargin))

    %store the class of the input for use later.

    classin=class(f);

    %If the imput is of class double,and it is outside the range [0,1],

    %and the specified transformation is not 'log',convert the input to the

    %range [0,1].

    if   strcmp(class(f),'double')&max(f(:))>1&~strcmp(varagin{1},'log')

    f=mat2gray(f);

    else %Convert to double,regardless of class(f).

    f=im2double(f);

    end %Determine the type of transformation specified.

    method=varargin{1};

    %Perform the intensity transformation specified.

    switch method

    case 'neg'

    g=imcomplement(f);

    case 'log'

    if length(varargin)==1

    c=1;

    elseif length(varargin)==2

    c=varargin{2};

    elseif length(varargin)==3

    c=varargin{2};

    classin=varargin{3};

    else

    error('Incorrect number of inputs for the log option.')

    end

    g=c*(log(1+double(f)));

    case 'gamma'

    if length(varargin)<2

    error('Not enough inputs for the gamma option.')

    end

    gam=varargin{2};

    g=imadjust(f,[],[],gam);

    case 'stretch'

    if length(varargin)==1  %Use defaults.

    m=mean2(f);

    E=4.0;

    elseif length(varargin)==3

    m=varargin{2};

    E=varargin{3};

    else error('Incorrect number of inputs for the stretch option.')

    end

    g=1./(1+(m./(f+eps)).^E);

    otherwise

    error('Unknown enhancement method.')

    end

    g=changeclass(classin,g);%Convert to the class of the input image.

    changeclass的M函数如下:

    function image=changeclass(class,varargin)

    %CHANGCLASS changes the storage class of an image.

    %I2=CHANGECLASS(CLASS,I);

    %RGB2=CHANGECLASS(CLASS,RGB);

    %BW2=CHANGECLASS(CLASS,BW);

    %X2=CHANGECLASS(CLASS,X,'indexed');

    switch class

    case 'unit8'

    image=im2uint8(varargin{:});

    case 'unit16'

    image=im2uint16(varargin{:});

    case 'double'

    image=im2double(varargin{:});

    otherwise

    error('Unsupported IPT data class.');

    end

    我的执行函数和错误如下:

    >>f=imread('cyl.jpg');

    g=intrans(f,'log');

    imshow(g);

    ??? Error using ==> changeclass

    Unsupported IPT data class.

    Error in ==> intrans at 58

    g=changeclass(classin,g);%Convert to the class of the input image.

    为什么会这样????总是出现这样的错误,为什么???我用的图像详细信息如下:

    Filename: 'cyl.jpg'

    FileModDate: '22-Sep-2007 13:17:50'

    FileSize: 84831

    Format: 'jpg'

    FormatVersion: ''

    Width: 639

    Height: 640

    BitDepth: 24

    ColorType: 'truecolor'

    FormatSignature: ''

    NumberOfSamples: 3

    CodingMethod: 'Huffman'

    CodingProcess: 'Sequential'

    Comment: {}

    请高手指点我一下,为什么会出现那样的错误,为什么出现的是不支持IPT数据格式?????

    展开全文
  • ****************假设某图像数据A(uint8格式)**********************A =235 200 89 20>> double(A) %返回与原矩阵数值相同但... im2double(A)%返回矩阵类型:double;数值范围[0 1] ,0对应uint8中的0;1对应...

    ****************假设某图像数据A(uint8格式)**********************

    A =

    235 200 89 20

    >> double(A) %返回与原矩阵数值相同但类型为double的矩阵;

    ans =

    235 200 89 20

    >> im2double(A)

    %返回矩阵类型:double;数值范围[0 1] ,0对应uint8中的0;1对应uint8中的255;

    ans =

    0.9216 0.7843 0.3490 0.0784

    >> mat2gray(A) %对原矩阵归一化

    ans =

    1.0000 0.8372 0.3209 0

    ****************假设矩阵A为一般二维数组,非图像数据(double格式)**********************

    A =

    235 200 89 20

    >> double(A)

    ans =

    235 200 89 20

    >> im2double(A)

    ans =

    235 200 89 20

    >> mat2gray(A)

    ans =

    1.0000 0.8372 0.3209 0

    **********************小结***************************

    im2double:如果输入类型是uint8、unit16 、logical,则按照0-->>0,255-->>1,将其值按比例处理成0~1之间的double数值;如果输入类型是double,输出没有处理;

    double:返回数值与输入相同的double类型矩阵;

    mat2gray:对输入进行归一化处理,最小值-->>0;最大值-->>1,输出类型为double。

    在实际的对图像处理过程中,由于我们读入图像是unit8型,而在MATLAB的矩阵运算中要求所有的运算变量为double型(双精度型)。因此通常使用im2double函数将图像数据转换成双精度型数据。

    展开全文
  • Matlab中mat2gray函数用法

    千次阅读 2021-01-12 08:49:46
    mat2gray将矩阵转换为灰度图像 语法 描述 例子 将矩阵转换为图像 输入参数 输出参数 mat2gray将矩阵转换为灰度图像 语法 I = mat2gray(A,[amin amax]) I = mat2gray(A) 描述 I = mat2gray...

    目录

    语法

    描述

    例子

    将矩阵转换为图像


    ​​​​​​​

    mat2gray将矩阵转换为灰度图像

    语法

    I = mat2gray(A,[amin amax])
    I = mat2gray(A)
    

    描述

    I = mat2gray(A,[amin amax]) 将矩阵转换为包含0(黑色)到1(白色)范围内的值A的灰度图像 I。 amin和amax中的值 A对应于中的0和1 I。小于的值amin被裁剪为0,大于的值 amax被裁剪为1。

    I = mat2gray(A) 设置的值amin,并amax在最小和最大值A。

    例子

    将矩阵转换为图像

            读取图像并显示。

    I = imread('rice.png');
    figure
    imshow(I)

            执行返回数字矩阵的操作。此操作查找边缘。

    J = filter2(fspecial('sobel'),I);
    min_matrix = min(J(:))
    
    min_matrix = -779
    
    
    max_matrix = max(J(:))
    
    max_matrix = 560

            请注意,矩阵的数据类型为double,其值在[0,1]范围之外,包括负值。显示操作结果。 因为矩阵的数据范围超出了imshow的默认显示范围,所以每个具有正值的像素都显示为白色,而每个具有负值或零值的像素都显示为黑色。 看到米粒的边缘非常具有挑战性。

    J = filter2(fspecial('sobel'),I);
    min_matrix = min(J(:))
    figure
    imshow(J)

            将矩阵转换为图像。 显示图像的最大值和最小值。

    K = mat2gray(J);
    min_image = min(K(:))
    
    min_image = 0
    
    
    max_image = max(K(:))
    
    max_image = 1

            请注意,值仍然是double类型的数据,但是所有值都在[0,1]范围内。显示转换结果。 像素显示一系列灰度颜色,这使边缘的位置更加明显。

    K = mat2gray(J);
    min_image = min(K(:))
    
    figure
    imshow(K)

    输入黑白值,指定为2-元素数字矢量。

    • 输入图像A中小于或等于amin的值映射到强度图像I中的值0。
    • A中大于或等于amax的值映射到I中的值1。

    输出强度图像,以数值矩阵形式返回,值在[0,1]范围内。

    展开全文
  • 出错 mat2gray (line 42) I = imlincomb(delta, A, -limits(1)*delta, 'double'); 出错 main>edgecheck_Callback (line 194) gradiant=mat2gray(G1); 出错 gui_mainfcn (line 95) feval(varargin{:}); 出错 main ...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

    错误使用 imlincomb

    需要的 输入数目 1, K1, 应为 实数。

    出错 imlincomb>ParseInputs (line 140)

    validateattributes(varargin{p}, {'double'}, {'real' 'nonsparse'

    'scalar'}, ...

    出错 imlincomb (line 70)

    [ims, scalars, outputClass] = ParseInputs(varargin{:});

    出错 mat2gray (line 42)

    I = imlincomb(delta, A, -limits(1)*delta, 'double');

    出错 main>edgecheck_Callback (line 194)

    gradiant=mat2gray(G1);

    出错 gui_mainfcn (line 95)

    feval(varargin{:});

    出错 main (line 42)

    gui_mainfcn(gui_State, varargin{:});

    代码:

    img_src=getappdata(handles.figure1,'img_src');

    spt=fspecial('sobel');

    Rx=imfilter(double(img_src(:,:,1)),spt,'replicate');

    Ry=imfilter(double(img_src(:,:,1)),spt,'replicate');

    Gx=imfilter(double(img_src(:,:,2)),spt,'replicate');

    Gy=imfilter(double(img_src(:,:,2)),spt,'replicate');

    Bx=imfilter(double(img_src(:,:,3)),spt,'replicate');

    By=imfilter(double(img_src(:,:,3)),spt,'replicate');

    gxx=Rx.^2+Gx.^2+Bx.^2;

    gyy=Ry.^2+Gy.^2+By.^2;

    gxy=Rx.*Ry+Gx.*Gy+Bx.*By;

    theta=0.5*(atan(2*gxy./(gxx-gyy+eps)));

    G1=0.5*((gxx+gyy)+(gxx-gyy)).*cos(2*theta)+2*gxy.*sin(2*theta);

    theta=theta+pi/2;

    G2=0.5*((gxx+gyy)+(gxx-gyy)).*cos(2*theta)+2*gxy.*sin(2*theta);

    G1=G1.^0.5;

    G2=G2.^0.5;

    G1=max(G1,G2);

    gradiant=mat2gray(G1);

    axes(handles.axes2);

    imshow(gradiant);

    setappdata(handles.figure1,'img_dst',gradiant);

    真不知道哪里错了 求大神,,

    展开全文
  • matlab中mat2gray函数用法

    万次阅读 多人点赞 2018-05-24 11:08:33
    mat2gray是一个计算机函数,功能是实现图像矩阵的归一化操作。 所谓”归一化”就是使矩阵的每个元素的值都在0和1之间。该函数在数字图像处理中经常用到。 函数简介 函数功能: 实现图像矩阵的归一化操作。[1] 所谓...
  • 图像类和类型间的转换im2uint8 将输入中所有小于0的设置为0,而将输入中所有大于1的设置为255 其他的所有乘以255im2uint16 将输入中所有小于0的设置为0,而将输入中所有大于1的设置为65535mat2gray 把一个double类的...
  • im2double 、mat2gray与double double 就是简单地把一个变量类型转换成double类型,数值大小不变 mat2gray是把一个double类的数组转换成取值范围为[0,1]的归一化double类数组。 函数im2double将输入转换成double类型...
  • mat2gray imclose 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 imopen 代码如下(示例): import numpy as np import pandas as pd import matplotlib.pyplot as plt import ...
  • Matlab中rgb2gray函数用法

    千次阅读 2020-12-30 11:21:50
    rgb2gray将 RGB 图像或颜色图转换为灰度图 语法 说明 示例 将 RGB 图像转换为灰度图像 将 RGB 颜色图转换为灰度颜色图 输入参数 输出参数 提示 算法 rgb2gray将 RGB 图像或颜色图转换为灰度图 语法 I =...
  • 2、灰度变换函数

    2021-04-24 13:15:36
    对数变换如下表达式实现: gs = im2uint8(mat2gray(log(1 + double(f)))); 对比度拉伸 变换函数为 matlab 中实现为 g = 1 ./ (1+(m./f).^E) 3、指定任意灰度变换 interp1 实现灰度映射的变换。 g = interp1(z, T, f...
  • Roberts边缘检测算子:根据一对互相垂直方向上的差分可用来计算梯度的原理,采用对角线方向相邻两像素之差。...I=imread(‘D:\文件及下载相关\图片\gray2.png‘);I=rgb2gray(I);grayPic=mat2gray(I);[m,n]=siz...
  • %RGB通道 mr=mat2gray(im2double(fr)); mg=mat2gray(im2double(fg)); mb=mat2gray(im2double(fb));%数据类型归一化 alf1=1458; %定义标准差alf=a^2/2 a=54 n=161;%定义模板大小 n1=floor((n+1)/2);%计算中心 for i=1...
  • mat2huff.m

    2021-04-20 02:00:41
    function y = mat2huff(x)%MAT2HUFF Huffman encodes a matrix.% Y = MAT2HUFF(X) Huffman encodes matrix X using symbol% probabilities in unit-width histogram bins between X's minimum% and maximum va...
  • %Hough变换 figure,imshow(imadjust(mat2gray(h)),'XData',t,'YData',r,'InitialMagnification','fit'),title('Hough变换矩阵');%显示Hough变换矩阵 xlabel('\theta'),ylabel('\rho'); axis on, axis normal,hold ...
  • *读取图片 A=imread('F:\Photo.01.png');...HSV=rgb2hsv(A); % rgb2hsv把rgb转化成hsv H=HSV(:,:,1); S=HSV(:,:,2); V=HSV(:,:,3); %可以通过上面三句话看一幅图的HSV三个通道 *SUBPLOT 的用法 subplot
  • %使用函数mat2gray Imat2=mat2gray(I0,[cwl,cwh]); imwrite(Imat2,'Imat2.bmp');%另存为 bmp 格式图像 %使用函数imadjust I0=double(I0); I1=double(I0+abs(min(I0(:)))); I2=I1/(max(I1(:))); l=(cwl+abs(min(I0(:...
  • cv::IMREAD_COLOR解析jpg时候,由cv::JpegDecoder解码得到一个RGB图像,然后由icvCvt_RGB2BGR_8u_C3R()函数交换R和B空间,得到BGR格式的彩色图。 cv::IMREAD_GRAYSCALE这个图像由cv::JpegDecoder解码得到一个灰度图...
  • 图像的灰度直方图(H是图像a.bmp的数据矩阵)imhist(H);%显示a的直方图histeq(H); %将图像a进行直方图均衡化adapthisteq(H); %将图像a进行直方图均衡化imhist函数只能处理...H=rgb2gray(imread('peppers.png'));subp...
  • 单通道像素值2.多通道像素值OpenCV默认颜色顺序为BGR二.成员公有函数cv::Mat类能够自动管理内存,由矩阵头和指向存储所有像素值的矩阵的指针构成cv::Mat类表示一个n维的密集数值单通道或多通道数组,它可用于存储实数...
  • OpenCV中CV_RGB2GRAY和CV_BGR2GRAY的区别

    千次阅读 2019-07-16 14:22:22
    平时处理图像的时候,很少用到彩色信息,一般...转换灰度图用的cvtColor的第三个参数中有两个参数,我一直没太注意区别,CV_RGB2GRAY与CV_BGR2GRAY。今天通过一个简单的测试区分一下。 测试代码如下: #include ...
  • OpenCV CV_RGB2GRAY与CV_BGR2GRAY的区别

    万次阅读 多人点赞 2018-06-25 17:03:10
    转换灰度图用的cvtColor的第三个参数中有两个参数,我一直没太注意区别,CV_RGB2GRAY与CV_BGR2GRAY。今天通过一个简单的测试区分一下。测试代码如下:#include &lt;opencv2\opencv.hpp&gt; using namespace...
  • matlab的bwlabel

    2021-04-21 17:06:30
    精品文档 clear;... f=im2bw(f,gray_level); [l,n]=bwlabel(f,8) imshow(f......基于 Matlab 的车辆牌照识别系统* 周志英 【摘要】摘要:介绍了一种基于 Matlab ...进行区域特征参数比较, 提取车...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 33,400
精华内容 13,360
关键字:

mat2gray