Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab s曲线变换在灰度图像中的应用_Matlab - Fatal编程技术网

Matlab s曲线变换在灰度图像中的应用

Matlab s曲线变换在灰度图像中的应用,matlab,Matlab,我需要一个s曲线变换的代码示例来增强乳房X光图像。我正在努力实现它。请帮助应用S曲线/对比度拉伸 这个问题似乎经常出现,所以我创建了几个示例脚本。该方法的第一步涉及对图像进行规格化,以将强度限制在0到1之间。由于强度介于0到1之间,现在可以将0.5视为中等强度。通常,S曲线变换可以由包含两个特定区域的分段函数来描述,一个区域拉升强度,另一个互补区域拉下强度。下图和方程式概述了用于配置变换曲线的特性: 方法1:图像矩阵的使用条件 该方法使用条件语句访问图像矩阵/数组的索引,并对其进行相应的转

我需要一个s曲线变换的代码示例来增强乳房X光图像。我正在努力实现它。请帮助

应用S曲线/对比度拉伸 这个问题似乎经常出现,所以我创建了几个示例脚本。该方法的第一步涉及对图像进行规格化,以将强度限制在0到1之间。由于强度介于0到1之间,现在可以将0.5视为中等强度。通常,S曲线变换可以由包含两个特定区域的分段函数来描述,一个区域拉升强度,另一个互补区域拉下强度。下图和方程式概述了用于配置变换曲线的特性:


方法1:图像矩阵的使用条件 该方法使用条件语句访问图像矩阵/数组的索引,并对其进行相应的转换

Image = rgb2gray(imread("saturn.png"));
Alpha = 5;

subplot(1,2,1); imshow(Image);
title("Original Image");

%Normalizing image from intensities 0 to 1%
Image = im2double(Image);

%Grabbing image size and pre-allocated array to hold contrast stretched
%image%
[Image_Height,Image_Width,~] = size(Image);
Contrast_Stretched_Image = zeros(Image_Height,Image_Width);

Contrast_Stretched_Image(Image < 0.5) = 0.5.*((Image(Image < 0.5)./0.5).^Alpha);
Contrast_Stretched_Image(Image >= 0.5) = 1 - (0.5.*(((1-Image(Image >= 0.5))./0.5).^Alpha));
subplot(1,2,2); imshow(Contrast_Stretched_Image);
title("Contrast Stretched Image");
Image=rgb2gray(imread(“saturn.png”);
α=5;
子批次(1,2,1);imshow(图像);
标题(“原始图像”);
%将图像强度从0%规格化到1%
Image=im2double(图像);
%抓取图像大小和预先分配的阵列以保持对比度
%图像%
[图像高度,图像宽度,~]=大小(图像);
对比度拉伸图像=零(图像高度、图像宽度);
对比度图像(图像<0.5)=0.5.*((图像(图像<0.5)。/0.5)。^Alpha);
对比度图像(图像>=0.5)=1-(0.5.*((1-图像(图像>=0.5))./0.5)。^Alpha);
子批次(1,2,2);imshow(对比度图像);
标题(“对比度拉伸图像”);

方法2:使用For循环 该方法使用一组for循环遍历像素,并计算与分段变换函数相对应的一组if语句

Image = rgb2gray(imread("saturn.png"));
Alpha = 5;

subplot(1,2,1); imshow(Image);
title("Original Image");

%Normalizing image from intensities 0 to 1%
Image = im2double(Image);

%Grabbing image size and pre-allocated array to hold contrast stretched
%image%
[Image_Height,Image_Width,~] = size(Image);
Contrast_Stretched_Image = zeros(Image_Height,Image_Width);

for Row = 1: Image_Height
    for Column = 1: Image_Width

    Pixel_Intensity = Image(Row,Column);
    if Pixel_Intensity < 0.5
        Contrast_Stretched_Image(Row,Column) = 0.5*((Pixel_Intensity/0.5)^Alpha);
    end

    if Pixel_Intensity >= 0.5
        Contrast_Stretched_Image(Row,Column) = 1 - (0.5*(((1-Pixel_Intensity)/0.5)^Alpha));
    end
        
    end
end

subplot(1,2,2); imshow(Contrast_Stretched_Image);
title("Contrast Stretched Image");
Image=rgb2gray(imread(“saturn.png”);
α=5;
子批次(1,2,1);imshow(图像);
标题(“原始图像”);
%将图像强度从0%规格化到1%
Image=im2double(图像);
%抓取图像大小和预先分配的阵列以保持对比度
%图像%
[图像高度,图像宽度,~]=大小(图像);
对比度拉伸图像=零(图像高度、图像宽度);
对于行=1:图像高度
对于列=1:图像宽度
像素密度=图像(行、列);
如果像素_强度<0.5
对比度拉伸图像(行、列)=0.5*((像素强度/0.5)^Alpha);
结束
如果像素强度>=0.5
对比度拉伸图像(行、列)=1-(0.5*((1像素强度)/0.5)^Alpha);
结束
结束
结束
子批次(1,2,2);imshow(对比度图像);
标题(“对比度拉伸图像”);

扩展:绘制对比度拉伸曲线
clf;
α=5;
图像=(0:0.01:1);
[图像高度,图像宽度,~]=大小(图像);
对比度拉伸图像=零(图像高度、图像宽度);
对比度图像(图像<0.5)=0.5.*((图像(图像<0.5)。/0.5)。^Alpha);
对比度图像(图像>=0.5)=1-(0.5.*((1-图像(图像>=0.5))./0.5)。^Alpha);
绘图(图像、对比度、拉伸图像);
标题(“对比度拉伸图像”);

你好,阿努什卡,欢迎来到SO!到目前为止,您成功地完成了哪些工作?您具体在做什么?我已经执行了直方图均衡化,现在想将其与clahe和s曲线变换进行比较。但s曲线的输出并不像预期的那样是原始图像的改进版本。此外,在clahe中,adapthisteq命令不起作用,并显示错误。好心帮忙
clf;
Alpha = 5;
Image = (0: 0.01: 1);
[Image_Height,Image_Width,~] = size(Image);
Contrast_Stretched_Image = zeros(Image_Height,Image_Width);
Contrast_Stretched_Image(Image < 0.5) = 0.5.*((Image(Image < 0.5)./0.5).^Alpha);
Contrast_Stretched_Image(Image >= 0.5) = 1 - (0.5.*(((1-Image(Image >= 0.5))./0.5).^Alpha));
plot(Image,Contrast_Stretched_Image);
title("Contrast Stretched Image");