1、图像点的运算

1.1 线性灰度变换

假定原图像A(x,y)的灰度变换范围为[a,b],处理后的图像B(x,y)的灰度扩展为[c,d],利用imadjust()函数。

close all;clear all;clc;
gamma=0.5;
I=imread("YW.jpg");
R=I;
R(:,:,2)=0;
R(:,:,3)=0;
R1=imadjust(R,[0.5 0.8],[0 1],gamma);
G=I;
G(:,:,1)=0;
G(:,:,3)=0;
G1=imadjust(G,[0 0.3],[0 1],gamma);
B=I;
B(:,:,1)=0;
B(:,:,2)=0;
B1=imadjust(B,[0 0.3],[0 1],gamma);
I1=B1+G1+R1;
figure,
subplot(121),imshow(R);
subplot(122),imshow(R1);
figure,
subplot(121),imshow(G);
subplot(122),imshow(G1);
figure,
subplot(121),imshow(B);
subplot(122),imshow(B1);
figure,
subplot(121),imshow(I);
subplot(122),imshow(I1);

结果:

针对图像,分别获得R、G、B图像,然后通过imadjust()中参数gamma对图像进行线性灰度变换,比较三个通道变换。

1.2分段线性灰度变换

首先将彩色图像变为灰度图像,寻找灰度值小于35的像素点,将原图的灰度值扩大10倍。再找到灰度值再35-75的像素点 H(x,y)=(10/7)*[J(x,y)-5]+50。最后大于75的像素点 H(x,y)=(105/180)*[J(x,y)-75]+150。

close all;clear all;clc;
R=imread("YW.jpg");
J=rgb2gray(R);
[M,N]=size(J);
x=1;
y=1;
for x=1:Mfor y=1:Nif(J(x,y)<=35);H(x,y)=J(x,y)*10;elseif (J(x,y)>35&J(x,y)<=75);H(x,y)=(10/7)*[J(x,y)-5]+50;else (J(x,y)>75);H(x,y)=(105/180)*[J(x,y)-75]+150;            endend
end
figure,
subplot(121),imshow(J);
subplot(122),imshow(H);

1.3非线性灰度变换

当输出图像的像素点灰度值和输入图像的像素点灰度值不满足线性关系时,这种灰度变换都成为非线性灰度变换 。

eg:基于对数变换的非线性灰度变换:g(x,y)=a+ln[f(x,y)+1]/(b*lnc)

其中a、b、c是为了调整曲线的位置和形状而引入的参数。图像通过对数变换可扩展低灰度值、压缩高灰度值。

对图像进行分段式灰度变换具体代码如下:

close all;clear all;clc;
I=imread("YW.jpg");
G=rgb2gray(I);
J=double(G);
H=(log(J+1))/10;
figure;
imshow(I);
figure;
imshow(G);
figure;
imshow(H);

2、图像代数运算

将两幅图进行加减乘除得到输出图像的方法称为图像代数运算。

具体代数表达式如下:

注意!!!

由于MATLAB中图像的数据类型时unit8,当进行迭代时可能会产生属性溢出,所以应当在进行图像代数运算之前首先将数据类型转换成double,从而保证结果准确性。

I=double(G);

具体代码实现如下:

2.1 图像叠加

close all;clear all;clc;
i=imread("rice.png");
j=imread("cameraman.tif");
I=double(i);
J=double(j);
K=imadd(i,j);
figure,
subplot(131);imshow(i);
subplot(132);imshow(j);
subplot(133);imshow(K);

结果:

2.2 加常数,改变亮度

close all;clear all;clc;
I=imread('flower.tif');
J=imadd(I,30);
figure,
subplot(121),imshow(I);
subplot(122),imshow(J);

结果:

注意!!! 图像加法的重要应用是降噪!!

通过同一图像叠加取平均,消除原图像中的附加噪声,其基本原理为巴拉巴拉~(自行百度啦~)

函数:J=imnoise(I,type,parameters):该函数是对图像I添加典型噪声后生成的有噪图像,结果返回J。其中I为原始图像,type为添加的噪声类型,取值可以是高斯噪声Gaussian等。

具体代码如下:

close all;clear all;clc;
RGB=imread('eight.tif');
A=imnoise(RGB,'gaussian',0,0.05);
I=A;
M=3;
I=im2double(I);
RGB=im2double(RGB);
for i=1:MI=imadd(I,RGB);
end
avg_A=I/(M+1);
figure,
subplot(121);imshow(A);
subplot(122);imshow(avg_A);

结果:

 函数版本:

Denoise.m

function [BW]=Dennoise(RGB,M)
A=imnoise(RGB,'gaussian',0,0.05);
I=A;
I=im2double(I);
RGB=im2double(RGB);
for i=1:MI=imadd(I,RGB);
end;
avg_A=I/(M+1);
BW=avg_A;

主函数:

close all;clear all;clc;
RGB=imread('eight.tif');
M1=3;
[BW1]=Dennoise(RGB,4);
[BW2]=Dennoise(RGB,9);
figure;
imshow(RGB);
figure;
disp('叠加四次结果:\n');
imshow(BW1);
figure;
disp('叠加九次结果:\n');
imshow(BW2);

结果:

2.2 图像的减法运算

利用减法实现DSA减影,具体代码如下:

close all;clear all;clc;
A=imread('cameraman.tif');
B=imread('testpat1.png');
C=imsubtract(A,B);
figure,
subplot(121),imshow(A);
subplot(122),imshow(B);
figure,
subplot(121),imshow(C);
subplot(122),imshow(255-C);

图像的像素运算(Matlab)相关推荐

  1. MATLAB图像处理学习——图像的像素运算

    目录 1.概述 2.实例 (1)图像点运算 1.线性灰度变换 2.分段线性灰度变换 3.非线性灰度变换 (2)图像代数运算 1.图像加法运算 2.图像的减法运算 3.图像的乘法运算 4.图像的除法运算 ...

  2. 图像处理之图像的像素运算

    一.图像点运算 点运算又称为对比度增强.对比度拉伸或灰度变换,是一种通过图像中的每一个像素值(即像素点上的灰度值)进行运算的图像处理方式.它将输入图像映射为输出图像,输出图像每个像素点的灰度值仅由对应 ...

  3. 数字图像处理4:图像的像素级运算

    图像处理入门:图像的像素级运算 2018年05月27日 17:14:09 M_Z_G_Y 阅读数:204 点运算: 代数运算: 加法运算: OpenCV中的加法是一种饱和算法,而python中的num ...

  4. opencv进阶学习笔记3:像素运算和图像亮度对比度调节

    基础版传送门: python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版目录: python+opencv进阶版学习笔记目录(适合有一定基础) 像素运算 要求两张图大小,以及格式(np ...

  5. 利用ArcGIS提取高光谱图像每个像素的光谱信息,再利用matlab显示每个像素的光谱信息

    1.示例高光谱图像 2.像素光谱信息提取步骤 2.1 栅格转点 在ArcGIS的工具箱中选择[栅格转点]工具,将每个像素都转成一个点,如下图所示: 2.2 多值提取至点 在ArcGIS的工具箱中选择[ ...

  6. matlab图像压缩像素编码,基于DCT的图像压缩编码算法的MATLAB实现

    基于DCT的图像压缩编码算法的MATLAB实现 摘要 随着科学技术的发展,图像压缩技术越来越引起人们的关注.为此从众多的图像压缩编码标准中选取了基于DCT变换的JPEG图像压缩编码算法进行研究,并通过 ...

  7. python3-opencv库(4)--图片像素运算,利用加权叠加调节图像对比度和亮度

    版权声明:转载请注明原作者及出处 本文所涉及的一切图像像素运算,前提都是两张图尺寸相同,通道数相同 import numpy as np from cv2 import cv2"" ...

  8. matlab中逻辑非运算,MATLAB:图像的与、或、非、异或逻辑运算(、|、~、xor)

    图像的与.或.非.异或逻辑运算涉及到了&.|.~和xor符号 close all;%关闭当前所有图形窗口,清空工作空间变量,清除工作空间所有变量 clc; clear all; I=imrea ...

  9. 图像去雾/图像去雨(matlab/python)

    看到许多小伙伴想进行图像去雨,图像去雾的任务,由于以前进行了此类项目,所以在此书写博客进行交流. 代码获取 去雨前言 从静止图像中去除雨水是一项复杂且具有挑战性的任务.雨滴仅影响图像的很小区域,因此导 ...

最新文章

  1. win10 UWP 应用设置
  2. 【学神-RHEL7】1-4-1-Linux文件管理和恢复误删除的文件
  3. Android PhoneGap源码分析——白名单
  4. 【browser】chinese chrome shows as english
  5. message show_once这个标志位的用法
  6. [HTML]去除li前面的小黑点,和ul、LI部分属性
  7. Java中的状态设计模式
  8. python教程自带数据库_python教程自带数据库 | Python学哪个数据库
  9. 启动mysql失败:net start mysql服务名无效
  10. Java 建模:子整体软件开发
  11. softmax sigmoid
  12. linux7找回删除的文件,centos7 rm -rf 删除文件的找回
  13. RuntimeError: NCCL error in:XXX,unhandled system error, NCCL version 2.7.8
  14. python分隔符的使用_使用python处理分隔符
  15. 独家爆料:创宇云与小鸟云的故事
  16. Huffman编解码
  17. Traffic Light
  18. Outlook 2016 pst/ost邮件数据文件迁移实现
  19. #MySQL#查找表中重复条目、删除重复条目
  20. 9*9的数独(dfs)

热门文章

  1. 设置笔记本桌面计算机,自己喜欢的图片怎么设置成电脑桌面?
  2. 欧拉影像放大算法(Eulerian Video Magnification)的原理和实现
  3. 微信小程序引爆朋友圈的秘密
  4. 焦点小组会议与引导式研讨会
  5. CRM客户关系管理系统开发第十八讲——实现客户拜访记录管理模块中保存客户拜访记录的功能
  6. Fabric 1.0源代码分析(30) Orderer #BroadcastServer(Broadcast服务端)
  7. 医疗器械售后维修现在及未来趋势
  8. Python基础教程,Python神仙级入门教程(非常详细)
  9. JavaScript的输入输出语句
  10. Python 牛客网编程题输入用例问题