一、医学图像的算数和逻辑运算
算法运算(代数运算):两幅图像或多幅输入图像之间进行点对点的加、减、乘、除运算得到输出图像的过程。
若将输入图像记为A(x,y)和B(x,y),输出图像为C(x,y),则有如下四种形式:
影像的代数运算在医学影像处理中的应用主要有加法运算和减法运算。
加法运算:两幅图像的像素对应相加,常被用于消除图像中的白噪声。
主要应用:

减法运算:两幅图像的像素对应相减,常被用于医学影像的造影增强显示。
差值图像提供了图像间的差值信息,能用于指导动态监测、运动目标的监测和跟踪、图像背景的消除及目标识别等。
主要应用:

图像的乘法和除法运算:两幅图像的像素对应相乘或相除,常被用于校正由于照明或传感器的非均匀性造成的图像亮度阴影。
乘法主要应用:

图像的逻辑运算:两幅图像的对应的像素做“与(AND)”、“或(OR)”,“非(NOT)”等逻辑运算,这种运算只能应用于二值图像(即像素取值仅有0或1的图像)。
二、医学图像的几何运算
图像的几何运算:主要包括图像的平移、旋转、缩放等几何变换,在数学上可以表示为像素坐标的变化。
目的:改变图像中物体间的空间关系
Ø图像平移是几何变换中最简单的一种
Ø图像旋转是以图像的中心为原点,旋转一定的角度,即将图像上的所有像素都选择一个相同的角度。

u图像镜像,分为水平镜像和垂直镜像两种。
u水平镜像是以图像的垂直中轴为对称轴,将图像的左右两部分对换。
u垂直镜像是以图像的水平中轴为对称轴,将图像的上下两部分对换。
三、医学图像的数学空间变换
1、傅里叶变换
图像从空间域到空间频率域的变换,即傅里叶变换。
图像可以看作一种2D信号,因此图像的傅里叶变换是2D傅里叶变换。
对图像做傅里叶变换之后,可以在频率域中简单而有效地实现图像增强处理和图像特征提取,因此图像的傅里叶变换在图像处理中得到了广泛的应用。
对图像做2D傅里叶变换,得到的结果称为图像的2D频谱,或傅里叶谱。
这些图像频谱(幅度谱)有一些共同的特征,即均有一定的对称性,且低频成分均较强。
2、离散余弦变换
离散余弦变换(DCT)是实数变换,即其频谱为频率的实函数。
而傅里叶变换是复数变换,即其频谱是频率的复函数。
离散余弦变换后,图像信号的能量主要集中在低频区域。
如JPEG图像压缩标准就是把图像切分成若干小块,然后对每个小块做DCT,并抛弃DCT中的高频分量以实现对图像的压缩。
DCT谱的坐标原点在左上角,显然,其低频分量比较显著。
3、小波变换
图像的小波变换(Wavelet Transform)把图像分解为4个频道:LL、HL、LH、HH。
四、实验例程
1、医学影像的灰度运算与代数运算
例1:Matlab读入医学影像,添加零均值的高斯白噪声,利用加法运算消除噪声
clc;clear;close all;
I = imread('spine.tif');
imshow(I);title('原始脊柱影像','fontsize',20);
J1 = imnoise(I,'gaussian',0,0.01); % 随机噪声-高斯噪声,均值0,标准差0.01
figure;imshow(J1);
J2 = imnoise(I,'gaussian',0,0.01);
J3 = imnoise(I,'gaussian',0,0.01);
J4 = imnoise(I,'gaussian',0,0.01);
avarage1 = 0.5*J1 + 0.5*J2;
avarage2 = 0.25*J1 + 0.25*J2 + 0.25*J3 + 0.25*J4;
figure;imshow(avarage1);
figure;imshow(avarage2);
% 100次求平均
K = zeros(512,512);
for i = 1:100
J = imnoise(I,'gaussian',0,0.02);
J = im2double(J);
K = K + J;
end
K = K/100;
figure;imshow(K);
2、医学影像的几何运算
例1:Matlab读入医学影像,添加零均值的高斯白噪声,利用加法运算消除噪声
clc;clear;close all;
I = imread('spine.tif');
imshow(I);title('原始脊柱影像','fontsize',20);
%% 图像平移
% se = translate(strel(1),[150 150]); % 向下移动150像素,向右移动150像素
% Y = imdilate(I,se); % 将影像按照se进行变换
% figure;
% imshow(Y);
Y0 = imtranslate(I,[150 150]);
figure;
imshow(Y0);
se1 = translate(strel(1),[-150 -150]); % 向上移动150像素,向左移动150像素
Y1 = imdilate(I,se1); % 将影像按照se进行变换
figure;
imshow(Y1);
%% 图像旋转
B1 = imrotate(I,-40,'bilinear');
B2 = imrotate(I,-40,'bilinear','crop');
B3 = imrotate(I,90,'bilinear');
B4 = imrotate(I,-40);
figure;
subplot(2,2,1);
imshow(B1);title('顺时针旋转40度,未裁切');
subplot(2,2,2);
imshow(B2);title('顺时针旋转40度,裁切');
subplot(2,2,3);
imshow(B3);title('逆时针旋转90度,未裁切');
subplot(2,2,4);
imshow(B4);title('顺时针旋转40度,最近邻');
%% 图像缩放
C = imresize(I,0.5);
figure;imshow(C);title('缩小影像');
D = imresize(I,2);
figure;imshow(D);title('放大影像');
E = imresize(I,[200,200]);
figure;imshow(E);title('规定尺寸缩放影像');
%% 图像镜像
F = flipud(I);
G = fliplr(I);
figure;
subplot(1,3,1);
imshow(I);title('原始影像');
subplot(1,3,2);
imshow(F);title('水平镜像');
subplot(1,3,3);
imshow(G);title('垂直镜像');