MATLAB图像处理(2)—hsv变换,自编直方图均衡化函数,双线性插值,抠图换色

news/2024/7/21 5:19:59 标签: matlab, 图像处理

1.利用MATLAB,修改亮度、饱和度和色调数据后显示原始图像和处理后的图像。

Img=imread('image.jpeg');
hsv=rgb2hsv(Img);
hsv(:,:,1)=1.1*hsv(:,:,1);%调整色调
hsv(:,:,2)=0.8*hsv(:,:,2);%调整饱和度
hsv(:,:,3)=1.5*hsv(:,:,3);%调整亮度
result=hsv2rgb(hsv);
subplot(121),imshow(Img),title('原图像');
subplot(122),imshow(result),title('HSV反变换');

2.实现对彩色图像的直方图均衡化处理(不采用MATLAB中封装好的统计直方图及均衡化函数)。

%主函数
function coloraverage()
I=imread('hehua.jpg');
imshow(I);
I1=I(:,:,1);%提取红色分量
I2=I(:,:,2);%提取绿色分量
I3=I(:,:,3);%提取蓝色分量
I1=histogram(I1);   %构造的函数
I2=histogram(I2);
I3=histogram(I3);
c=cat(3,I1,I2,I3);  %cat用于构造多维数组
subplot(1,2,1);imshow(I),title('原图');
subplot(1,2,2);imshow(c),title('均衡化后图像');

%调用的(直方图均衡化)构造函数
function d=histogram(I)%构造histogram函数
J=I;
[m,n]=size(I);      %确定矩阵大小
area=m*n;
a=zeros(1,256);     %产生1*256的零矩阵a,用来存放原始图像各个灰度值的个数
b=zeros(1,256);
for i=1:m           %记录各个灰度值的个数
    for j=1:n
        d=I(i,j)+1;   %获取(i,j)位置的灰度值(注意:灰度值为0-255,对应矩阵的1-256)
        a(1,d)=a(1,d)+1;    %矩阵a上对应灰度值的计数+1
    end
end
for i=1:256         %均衡化
    sum=0;
    for j=1:i
        sum=sum+a(1,j);
    end
    b(1,i)=sum*255/area;
end
for i=1:m           %用均衡化后的数据代替原位置的数据
    for j=1:n
        d=J(i,j)+1;
        J(i,j)=b(1,d);
    end
end
d=J;

3.一幅图像
在这里插入图片描述
,设置缩放比例
在这里插入图片描述

,采用双线性插值对其进行放大。(不采用MATLAB函数)

f=[1 4 7;2 5 8;3 6 9];
[h,w]=size(f);
kx=2.3;
ky=1.6;
i=ceil(ky*h);
j=ceil(kx*w);
for newx=1:j;
    for newy=1:i;
        oldx=(newx-1)/kx;
        oldy=(newy-1)/ky;
        x=floor(oldx)+1;
        y=floor(oldy)+1;
        a=oldx-floor(oldx);
        b=oldy-floor(oldy);
        if x<w && y<h
            g(newy,newx)=f(y,x)+b*(f(y+1,x)-f(y,x))+a*(f(y+1,x)-f(y,x))+a*b*(f(y+1,x+1)+f(y,x)-f(y,x+1)-f(y+1,x));
        elseif x>=w && y<h
            g(newy,newx)=f(y,x)+b*(f(y+1,x)-f(y,x));
        elseif x<w && y>=h
            g(newy,newx)=f(y,x)+a*(f(y,x+1)-f(y,x));
        else
            g(newy,newx)=f(y,x);
        end
    end
end

4.将荷花图像采用MATLAB抠出,并改变荷花的颜色

Image=im2double(imread('hehua.jpg'));
subplot(1,2,1);imshow(Image);title('原图');
HSV=rgb2hsv(Image);h=HSV(:,:,1);S=HSV(:,:,2);
epslon=1/10;
pos=(h>14/48-epslon & h<1/4+epslon & S>1/4);
h(~pos)=h(~pos)*0.75;
HSV(:,:,1)=h;
result=hsv2rgb(HSV);
subplot(1,2,2);imshow(result);title('最终结果');

在这里插入图片描述

支持可以关注我哦,持续分享编写的代码。


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

相关文章

2021年机械员-岗位技能(机械员)考试资料及机械员-岗位技能(机械员)考试APP

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2021年机械员-岗位技能(机械员)考试资料及机械员-岗位技能(机械员)考试APP&#xff0c;包含机械员-岗位技能(机械员)考试资料答案和解析及机械员-岗位技能(机械员)考试APP练习。由安全生产模拟考试一点通公众号结合国…

B. Maximal Continuous Rest(遍历)Codeforces Round #547 (Div. 3)

原题链接&#xff1a;https://codeforces.com/problemset/problem/1141/B 题意&#xff1a;给定一个序列&#xff0c;女孩每次都会重复这个序列做事情&#xff0c;让我们寻找有多少个连续的1。 解题思路&#xff1a;注意是周期&#xff0c;我们要开两倍大的数组存放着重复的序…

JavaMail邮件开发

(api 配置) 开发中&#xff0c;邮件的应用&#xff1f; - 注册&#xff0c;填写生日&#xff1b; 后期系统会自动发送生日祝贺 - 发货&#xff0c;发货提醒&#xff01;邮件提醒&#xff01; 邮件&#xff1a; 1. 发邮件&#xff1b;【程序中如何发邮件&#xff01;】 …

采用图像增强,二值/边缘检测对跑道图预处理,用radon变换检测跑道线,radon反变换得结果

MATLAB的radon变换检测跑道线 ①预处理&#xff1a;图像增强、消噪、分割、边缘化&#xff1b; ②Radon变换:边缘图像作Radon变换 ③直线检测:搜索变换域内局部最大值(亮点) &#xff0c; 根据识别规则&#xff0c; 检测目标直线变换域参数&#xff0c; 确定目标类型 ④直线拟…

Hyperledger Sawtooth Lake的PoET简介

警告这个工程包含一个运行在受信任的执行环境(例如:Intel Software Guard Extensions (SGX))的共识算法PoET&#xff08;时间消失证明&#xff09;。它发布了包含运行在SGX外部和模仿PoET算法行为的软件。在这种模式下他并不提供安全性。这个工程打算用于实验运用&#xff0c;我…

利用MATLAB实现对一幅彩色图像的高斯滤波(不采用MATLAB函数)。

利用rgb三通道分别高斯滤波的方案完成对彩色图像的高斯滤波 function gaosilvbo() Iimread(1.jpeg); I imnoise(I,gaussian); %加噪 imshow(I); I1I(:,:,1);%提取红色分量 I2I(:,:,2);%提取绿色分量 I3I(:,:,3);%提取蓝色分量 I1gaosi(I1); %构造的函数 I2gaosi(I2); I3gaos…

2021年金属非金属矿山(露天矿山)主要负责人模拟考试题及金属非金属矿山(露天矿山)主要负责人模拟考试系统

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2021年金属非金属矿山&#xff08;露天矿山&#xff09;主要负责人模拟考试题及金属非金属矿山&#xff08;露天矿山&#xff09;主要负责人模拟考试系统&#xff0c;包含金属非金属矿山&#xff08;露天矿山&#xf…

C. Polycarp Restores Permutation(思维)Codeforces Round #547 (Div. 3)

原题链接&#xff1a;https://codeforces.com/contest/1141/problem/C 题意&#xff1a;给你一个长度为n-1的p序列&#xff0c;其中p[i]a[i1]-a[i];求原排列a&#xff0c;要求a序列中[1,n]每个数字都只出现一次&#xff0c;若有&#xff0c;则输出此序列&#xff0c;若没有&am…