matlab学习笔记(七)---空域变换增强-图像间的代数运算

news/2024/7/7 10:07:03

1、图像相加运算

1.1增强图像的亮度

   I = imread('rice.png');
   J = imadd(I,50);
   subplot(1,2,1), imshow(I),title('原图像');
   subplot(1,2,2), imshow(J), title('增强图像的亮度');

效果图如下:



1.2图像叠加

   I = imread('rice.png');
   J = imread('cameraman.tif');
   K = imadd(I,J,'uint16');
   subplot(131),imshow(I),title('图像一');
   subplot(132),imshow(J),title('图像二');
   subplot(133),imshow(K,[]),title('叠加后的图像');
效果图如下:



1.3通过求平均值降噪

   clear;
   I = imread('rice.png');
   subplot(221),imshow(I),title('图像一');
   [m,n]=size(I);
   J(m,n)=0;
   J=double(J);
   X=imnoise(I,'gaussian');Y=double(X);  %加入噪声
   subplot(222),imshow(X),title('加噪图像一');
   J=J+Y/10;
   X=imnoise(I,'gaussian');Y=double(X);  %加入噪声
   subplot(223),imshow(X),title('加噪图像二');
   J=J+Y/10;
   for i=1:8                      %循环运算,对噪声的图像取平均值
     X=imnoise(I,'gaussian')
     Y=double(X);
     J=J+Y/10;
   end
   subplot(224),imshow(mat2gray(J)),title('10幅噪声图像平均结果');
效果图如下:




2.图像相减运算

2.1比较余弦压缩变换图像和原图像的区别

I=imread('cameraman.tif');
I=im2double(I);
T=dctmtx(8);   %产生二维DCT矩阵
%计算二维DCT,T和T转置是DCT函数P1*x*P2的参数
B=blkproc(I,[8 8],'P1*x*P2',T,T'); 
%二值掩模,用来压缩DCT系数 
mask=[1 1 1 1 0 0 0 0
      1 1 1 0 0 0 0 0
      1 1 0 0 0 0 0 0
      1 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 0];
B2=blkproc(B,[8 8],'P1.*x',mask);  %只保留DCT变换的10个系数
I2=blkproc(B2,[8 8],'P1*x*P2',T',T);  %重构图像
subplot(131),imshow(I),title('原始图像');
subplot(132),imshow(I2),title('压缩图像');
N=I2-I;    %两个图像相减
subplot(133),imshow(N),title('差别图像');
效果图如下:


2.2去掉图像rice.png中的背景亮度图像

clear,close all
I=imread('rice.png');
subplot(121),imshow(I),title('原始图像');
background=imopen(I,strel('disk',15));  %得到背景图像
I2=imsubtract(I,background);   %通过代数减法去掉图像中的背景图像
subplot(122),imshow(I2),title('去除背景的图像');
效果图如下:








http://www.niftyadmin.cn/n/4464349.html

相关文章

matlab学习笔记(八)---空域滤波增强

1、平滑滤波器 1.1线性平滑滤波器 1.1.1给图像加入椒盐噪声 Iimread(eight.tif); Jimnoise(I,salt & pepper,0.02); subplot(121),imshow(I),title(原始图像); subplot(122),imshow(J),title(加入椒盐噪声的图像);效果图如下:1.1.2对一个图像进行不同大小模板…

va_start va_end

C语言中可变参数的用法 我们在C语言编程中会遇到一些参数个数可变的函数,例如printf() 这个函数,它的定义是这样的: int printf( const char* format, ...); 它除了有一个参数format固定以外,后面跟的参数的个数和类型是 可变的,例…

添加系统调用 http://docs.huihoo.com/joyfire.net/6-1.html

第一步:1.找到linux 内核代码所在地,一般在你的系统这个位置(你下载代码放其他地方我不反对) /usr/src/linux/ 但是也可能是这个位置 /usr/src/linux-2.4/或者其他 找到后cd /usr/src/linux*/ 转到该目录下. linux*表示代码所在的文件夹2.修改内核代码 a.添加源文件 假设新加…

matlab学习笔记(九)---频域增强

1、低通滤波 1.1对图像eight.tif加入椒盐噪声后,实现Butterworth低通滤波。 clear; I1imread(eight.tif); subplot(221),imshow(I1),title(原始图像); I2imnoise(I1,salt & pepper); %加入椒盐噪声 subplot(222),imshow(I2),title(噪声图像); fdouble(I2)…

matlab学习笔记(十)---边缘检测

分别采用roberts、sobel、prewitt、canny、log算子来检测图像的边缘并比较 Iimread(rice.png); B1edge(I,roberts); B2edge(I,sobel); B3edge(I,prewitt); B4edge(I,canny); B5edge(I,log); subplot(231),imshow(I),title(原始图像); subplot(232),imshow(B1),title(roberts算子…

2.6.8内核中通过模块添加系统调用,不用编译内核

我在2.6.8中通过模块添加系统调用,发现了两个问题:1.是sys_call_table的符号不可以被解析2.除了283 所有的系统调用号都已经被占用 ,且没有空余。(要是想添加的系统调用号大于283,我们就要先改变unistd.h中的NR_syscalls 改的大一…

fedora 升级内核

尽管在Fdora Core 8下可以使用yum升级内核,但是毕竟是别人编译通用内核,里面添加了很多自己系统不需要的模块,而自己需要的模块却没有开启。因此,学会自己手动编译升级内核也是必要的。 1、下载内核 linux内核可以从http://kernel…

matlab学习笔记(十一)---二值形态学运算

1、膨胀运算 1.1对图像text.png进行膨胀操作,并对比。 bwimread(text.png); sestrel(line,11,90); %创建一个线性结构元素 bw2imdilate(bw,se); %用线性结构元素来进行膨胀操作 subplot(121),imshow(bw),title(原始图像); subplot(122),imshow(bw2),title(膨…