matlab学习(三)(4.9-4.15)

一、空域里LSB算法的原理

1.原理:

        LSB算法通过替换图像像素的最低位来嵌入信息。这些被替换的LSB序列可以是需要加入的水印信息、水印的数字摘要或者由水印生成的伪随机序列。

2.实现步骤:

(1)将图像文件中的所有像素点以RGB形式分隔开,并将各个颜色分量转换成二进制表示。

(2)把每个颜色分量值的最后一位全部设置成0,这不会影响图像的显示格式,但可以在该位置存放信息。

(3)将水印字符转化为二进制字符串,并将这些信息依次填入颜色分量的最低位上,即可完成信息的嵌入。

(4)要提取信息,只需将图像像素的最低位依次提取出来并进行拼接,即可得到原始信息

3.matlab中代码实现:

% 读取原始图像和水印图像
I = imread('test6.jpg');
I = rgb2gray(I);

watermark = imread('ws2.jpg');
watermark = rgb2gray(watermark);

% 调整水印图像的大小,使其与原始图像相同
[M, N] = size(I);
watermark = imresize(watermark, [M, N]);

% 将水印嵌入到原始图像中
watermarked_image = I;
for i = 1:M
    for j = 1:N
        % 将原图像的最低有效位值换为水印的值
        watermarked_image(i, j) = bitset(I(i, j), 1, watermark(i, j));
    end
end

% 提取水印
extracted_watermark = zeros(M, N);
for i = 1:M
    for j = 1:N
        % 从嵌入水印图像中提取水印
        extracted_watermark(i, j) = bitget(watermarked_image(i, j), 1);
    end
end

% 显示图像
figure;
subplot(2, 2, 1); imshow(I); title('原始图像');
subplot(2, 2, 2); imshow(watermark); title('水印图像');
subplot(2, 2, 3); imshow(watermarked_image); title('嵌入后的图像');
subplot(2, 2, 4); imshow(extracted_watermark); title('提取水印后的图像');
 

4.运行结果:

二、插值扩展算法的原理

1.原理:

        插值算法是一种根据已知数据点来预测未知数据点值的方法。在图像领域中,我们常用插值算法来修改图像尺寸。常见的插值方法有两种:

(1)最近邻插值(Nearest Interpolation): 最近邻插值从原图像矩阵中找到与目标图像像素点距离最近的点,然后将最近点的像素值赋给目标像素点。 计算目标图像像素坐标与原图像像素坐标的对应关系,通过四舍五入来找到最近的点。 尽管最近邻插值计算量较小,但可能会在灰度变化处产生明显的锯齿现象。

(2)线性插值(Linear Interpolation): 线性插值需要找到周围最近的两个点进行插值运算。 单线性插值通过两个最近邻点的加权平均来估计未知点的像素值。 双线性插值在两个方向分别进行一次线性插值,得到目标像素点的值。

插值扩展算法通常属于线性插值的一种扩展。

2.两种方法的实现步骤:

3.插值算法的维度:

(1)一维interpl插值算法:

该算法适用于已知一系列离散数据点的情况下,通过插值计算得到任意一点的函数值。 具体步骤包括:输入一组已知的离散数据点 ((x_i, y_i)),其中 (x_i) 是自变量,(y_i) 是因变量。 对数据点按照 (x) 值从小到大进行排序。 对于给定的待插值点 (x),找到插值区间 ([x_i, x_{i+1}]),使得 (x_i \leq x \leq x_{i+1})。 利用已知点之间的直线作为插值函数,即根据公式 [ f(x) = \frac{x_{i+1} - x}{x_{i+1} - x_i}y_i + \frac{x - x_i}{x_{i+1} - x_i}y_{i+1} ] 计算出插值点 (x) 的函数值 (f(x))。 输出插值点 (x) 的函数值 (f(x))。

(2)二维interp2插值算法:

该算法适用于已知二维离散数据点的情况下,通过插值计算得到任意一点的函数值。 具体步骤类似于一维插值,但在二维平面上进行插值。 输出插值点 ((x, y)) 的函数值 (f(x, y))。

4.在matlab中代码实现:

% 读取原始图像
originalImage = imread('test7.jpg');

% 设置目标图像的尺寸(例如,扩大2倍)
targetWidth = size(originalImage, 2) * 2;
targetHeight = size(originalImage, 1) * 2;

% 使用双线性插值算法进行图像扩展
expandedImage = imresize(originalImage, [targetHeight, targetWidth], 'bilinear');

% 显示原始图像和扩展后的图像
figure;
subplot(1, 2, 1);
imshow(originalImage);
title('原始图像');

subplot(1, 2, 2);
imshow(expandedImage);
title('扩展后的图像');

% 可选:保存扩展后的图像
imwrite(expandedImage, 'expanded_test7.jpg');

% 注意:您需要将此代码保存为.m文件并在MATLAB中运行。
 

5.运行结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/618763.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

域权限维持—黄金票据和白金票据

黄金票据和白金票据 前言 某老哥的一次面试里问到了这个问题,故来做一番了解 该攻击方式在BlackHat 2014被提出,演讲者为Alva Duckwall & Benjamin Delpy(gentilkiwi)进行了演示,该演讲提出了Kerberos协议实现过程中的设计…

【5G PHY】5G无线链路监测原理简述

博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。 博客…

bugku-web-文件包含2

页面源码 <!-- upload.php --><!doctype html><html><head><meta charset"utf-8"/><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-widt…

精品方案- 智慧养殖业IOT项目技术建议书(免费下载)

本项目建设从实际需求出发&#xff0c;利用物联网信息化手段进行畜牧业经济运行监测&#xff0c;掌握畜牧业生产与畜牧业经济运行的动态&#xff0c;监测畜牧业生产经营的成本收益变化&#xff0c;对畜牧业生产经营活动提供分析。提高畜牧业市场监管的电子化、网络化水平&#…

Unity上接入手柄,手柄控制游戏物体移动

1、unity软件上安装system input 组件。菜单栏【window】-【Packag Manager】打开如下界面,查找Input System,并且安装。 2、安装成功后插入手柄到windows上,打开菜单栏上【window】--【Analysis】--【Input Debuger】 进入Input Debug界面,可以看到手柄设备能被Unity识别。…

Python学习笔记16 - 函数

函数的创建和调用 函数调用的参数传递 函数的返回值 函数的参数定义 变量的作用域 递归函数 斐波那契数列 总结

详解拷贝构造

拷贝构造的功能 写法&#xff1a; 拷贝构造函数的参数为什么是引用类型 系统自动生成的拷贝构造函数 拷贝构造的深拷贝与浅拷贝 概念 浅拷贝&#xff1a; 深拷贝 小结 拷贝构造的功能 拷贝构造函数可以把曾经实例化好的对象的数据拷贝给新创建的数据 &#xff0c;可见…

架构师系列-搜索引擎ElasticSearch(八)- 集群管理故障恢复

故障转移 集群的master节点会监控集群中的节点状态&#xff0c;如果发现有节点宕机&#xff0c;会立即将宕机节点的分片数据迁移到其它节点&#xff0c;确保数据安全&#xff0c;这个叫做故障转移。 下图中node1是主节点&#xff0c;其他两个节点是从节点 节点故障 此时node1…

数模 线性规划模型理论与实践

线性规划模型理论与实践 1.1 线性规划问题 在人们的生产实践中&#xff0c;经常会遇到如何利用现有资源来安排生产&#xff0c;以取得最大经济效益的问题。此类问题构成了运筹学的一个重要分支一数学规划&#xff0c;而线性规划(Linear Programming 简记LP)则是数学规划的一个…

深入剖析MongoDB集群架构设计

目录 一、MongoDB集群架构介绍 1.1 主从复制 1.2 副本集 1.3 分片集群 二、副本集 3.1 主节点选举 3.2 oplog 3.2 主从同步 三、分片集群 3.1 分片策略 3.2 分片键的选择 3.3 何时选择分片集群 四、总结 一、MongoDB集群架构介绍 MongoDB 有三种集群架构模式&#xff0c;分…

bugku-web-文件上传

提示他的名字是margin&#xff0c;给他一个图片文件&#xff0c;不要php文件 上传一句话木马的图片 抓包&#xff0c;后缀改为php 提示无效文件&#xff0c;即后台还会检测一次后缀 测试后台系统 为linux系统 开始绕过 截断绕过 上传成功&#xff0c;但是会变为jpg 开始分析…

【opencv】示例-stiching.cpp 图像拼接

#include "opencv2/imgcodecs.hpp" // 导入opencv图像编码功能库 #include "opencv2/highgui.hpp" // 导入opencv高层用户界面功能库 #include "opencv2/stitching.hpp" // 导入opencv图像拼接功能库#include <iostream> // 导入输入输出…