应用:对医学数字图像进行切片处理,使所需要观察的部位更加凸显
原始图像:
第一种切片方式:
第二种切片方式:
clear;close all;
Image = im2double(imread('AG.jpg')); % 将数字图像精度转换至双精度
[h, w] = size(Image); % 获取图像大小 即图像的高h,宽w
imshow(Image);title('ACG图像'); % 展示原始图像
NewImagel=zeros(h,w); % 根据图像生成矩阵
NewImage2 = Image;
a=170/256;b=200/256;c=90/256;d=250/256; % 初始化设置参数
for x=1:w % 进入循环
for y=1:h
if Image(y,x)=a 则将此像素点值置为d
end
if Image(y,x)>c && Image(y,x) < a % 取参数大于c小于a 范围内的值置零
NewImage2(y,x)=0;
end
end
end
figure; imshow(NewImagel);title('图5-5(a)窗切片图像');
figure; imshow(NewImage2);title('图5-5(b)窗切片图像');
clc:清除命令窗口的内容,对工作环境中的全部变量无任何影响
close:关闭当前的Figure窗口
close all:关闭所有的Figure窗口
clear:清除工作空间的所有变量
clear all:清除工作空间的所有变量,函数,和MEX文件
不同的灰度级变换(分段线性;截断式;高低灰度值保持不变)
clc;clear;close all;
Image = im2double(rgb2gray(imread('lotus.bmp'))); % 通过消除图像色调和饱和度信息同时保留亮度实现将RGB图像或彩色图转换为灰度图像,即灰度化处理的功能
% 将读取的图像灰度化并增大精度
[h,w] = size(Image); % 获取图像尺寸 h:height,高度;w:width 宽度
imshow(Image);title('原始lotus图像'); % 展示灰度图像Image
NewImage1 = zeros(h,w); % 生成 h行 w 列的二维矩阵
NewImage2 = zeros(h,w);
NewImage3 = Image;
a = 30/256;b = 100/256;c= 75/256;d= 200/256;
for x = 1 : w % 最外层循环 宽度
for y = 1 : h % 内层循环 高度
if Image(y,x)a&& Image(y,x)
图像直方图与均衡化后图像直方图对比
clear;close all;
Image = rgb2gray(imread('couple.bmp')); % 读取灰度化图像
histgram = imhist(Image); % 直接调用函数 imhist(I,N): 统计并显示图像I的直方图,N为灰度级,默认256
[h,w] = size(Image);
NewImage = zeros(h,w); % 根据图像尺寸生成
s = zeros(256); s(1) = histgram(1); % s:256x256双精度矩阵; 初始化s(1)
for t = 2:256
s(t) = s(t-1)+histgram(t); % 获取灰度值的累积分布
end
for x = 1:w
for y = 1:h
NewImage(y,x) = s(Image(y,x)+1)/(w*h); %利用直方图计算新的图像灰度级 频率
end
end
figure;imshow(Image);title('couple灰度图像');
figure;imhist(Image);title('couple灰度图像的直方图');
axis tight;
figure;imshow(NewImage);title('直方图均衡化处理后图像');
figure;imhist(NewImage);title('直方图均衡化处理后图像的直方图');
axis tight;
%matlab 提供了直方图均衡化函数
%J = histeq(I,N)
%对图形I进行均衡化处理,N为输出图像的灰度级数
% clc,clear,close all;
% Image = imread('couple.bmp');
% NewImage = histeq(Image,64);
% subplot(121),imshow(Image);
% subplot(122),imshow(NewImage);
直方图统计过程:通过循环统计图像每一个像素点值,得到(0,256)范围每一个值的个数,生成直方图
clc;clear;close all;
Image = rgb2gray(imread('couple.bmp')); % 读取灰度化图像
histgram = zeros(256); % 生成矩阵 256x256
[h , w] = size(Image); % 获取图像尺寸
for x = 1 : w
for y = 1 : h
histgram(Image(y,x)+1) = histgram(Image(y,x)+1)+1; % 在循环中统计并累加
end
end
imshow(Image);title('couple灰度图像');
figure;stem(histgram(),'.'); % stem(Y) %绘制直方图高度为Y值
%stem(X,Y)%在位置X处绘制直方图
% stem(_,‘fill’)%fill表示填充图形中的小圆圈 ‘.’则无填充
axis tight; % axis tight 是设置坐标轴显示范围为紧凑型
% 也可以直接调用函数 imhist(I,N): 统计并显示图像I的直方图,N为灰度级,默认256
% imhist(X,MAP):统计并显示索引图像的直方图,MAP为调色板;
% [COUNTS,X] = imhist(...):返回直方图数据向量COUNTS和相应的色彩向量X
% 程序如下:
% Image = reg2gray(imread('couple.bmp'));
% figure;imhist(Image);
% axis tight;
可查看生成矩阵更容易理解