MATLAB实现图片栅格化

devtools/2024/11/12 20:44:37/

MATLAB实现图片栅格化

1.读取图片:首先,你需要使用imread函数读取要栅格化的图片。

2.设置栅格大小:确定你希望将图片划分成的栅格大小,即每个栅格的宽度和高度。

3.计算栅格数量:根据图片的总尺寸和栅格大小,计算出栅格的行数和列数。

4.遍历栅格:使用嵌套的for循环来遍历每一个栅格。

5.提取栅格内容:在每个栅格的位置上,使用矩阵索引提取出该栅格内的像素值。

6.处理栅格:对每个栅格进行所需的处理,比如二值化、灰度化等。

7.显示或保存结果:可以选择显示每个栅格的处理结果,或者将所有栅格的处理结果组合起来显示整幅栅格化后的图片,也可以保存处理后的图片。

clc;close all;clear all;warning off;%清除变量
rand('seed', 100);
randn('seed', 100);
format long g;% (1) 读取图像
img0 = imread('1.png'); % 替换为你的图像路径
% (1) 读取图片
figure;
imshow(img0); % 显示原始图像
% 转换为灰度图像
img = double(rgb2gray(img0))/255;
size(img)% (2) 对图片进行栅格化
grid_size = [20,20]; % 设置栅格大小,例如50x50像素
aaa = size(img) ./ grid_size;
grid_rows=aaa(1);
grid_cols=aaa(2);
grid_rows = floor(grid_rows);
grid_cols = floor(grid_cols);rasterized_img = zeros(grid_rows*grid_size(1), grid_cols*grid_size(2));G=zeros(grid_rows,grid_cols);% 栅格结果for i = 1:grid_rowsfor j = 1:grid_cols% 提取栅格区域row_start = (i-1)*grid_size(1) + 1;row_end = i*grid_size(1);col_start = (j-1)*grid_size(2) + 1;col_end = j*grid_size(2);% 截取栅格图像grid_img = img(row_start:row_end, col_start:col_end);% 将栅格图像放入栅格化图像中rasterized_img(row_start:row_end, col_start:col_end) = grid_img;% 对栅格图像进行二值化%         mean(mean((grid_img)))if mean(mean((grid_img)))<0.95; % 计算阈值G(i,j)=0;elseG(i,j)=1;endend
end% G
figure;
imshow(G);
title('栅格化后');G=flipud(G);%垂直翻转
bockmat=G;grid_rows=aaa(1);
grid_cols=aaa(2);% 设定网格参数
nx=grid_cols;% 划分数
ny=grid_rows;% 划分数dx=grid_size(2);
dy=grid_size(1);
xmin=0;
xmax=nx*dx;
ymin=0;
ymax=ny*dy;tic;
[nodetable,XY,nodenumber]=nodetablefun(nx,ny,dx,dy);% 计算节点表格
disp('计算节点表格完成');
XY(:,1)=XY(:,1)+xmin;
XY(:,2)=XY(:,2)+ymin;bocktable=bocktablefun_tan(nodetable,nx,ny,nodenumber,bockmat);
disp('计算bocktable完成');nodeset= find(bocktable==1);
title201='栅格模型';
drawshelf(XY,dx,dy,nodeset,title201);% 绘图


http://www.ppmy.cn/devtools/6486.html

相关文章

Go中的HTTP请求处理概述

使用 Go 处理 HTTP 请求主要涉及两件事&#xff1a;ServeMuxes 和 Handlers。 ServeMux本质上是一个 HTTP 请求路由器&#xff08;或多路复用器&#xff09;。它将传入的请求与预定义的 URL 路径列表进行比较&#xff0c;并在找到匹配时调用路径的关联 handler。 handler 负责写…

鸢尾花数据集分类(决策树,朴素贝叶斯,人工神经网络)

目录 一、决策树 二、朴素贝叶斯 三、人工神经网络 四、利用三种方法进行鸢尾花数据集分类 一、决策树 决策树是一种常用的机器学习算法&#xff0c;用于分类和回归任务。它是一种树形结构&#xff0c;其中每个内部节点表示一个特征或属性&#xff0c;每个分支代表这个特征…

Scanpy(2)多种可视化

本篇内容为scanpy的可视化方法&#xff0c;可以分为三部分&#xff1a; embedding的散点图&#xff1b;用已知marker genes的聚类识别&#xff08;Identification of clusters&#xff09;&#xff1b;可视化基因的差异表达&#xff1b; 我们使用10x的PBMC数据集&#xff08;…

声明式 GUI 工具包:响应式、跨平台、多语言 | 开源日报 No.230

slint-ui/slint Stars: 14.5k License: NOASSERTION slint 是一个声明式的 GUI 工具包&#xff0c;用于为 Rust、C 或 JavaScript 应用程序构建原生用户界面。 可扩展性&#xff1a;支持响应式 UI 设计&#xff0c;跨操作系统和处理器架构的跨平台使用&#xff0c;并支持多种…

Mac电脑版鼠标连点工具 RapidClick for Mac

RapidClick for Mac是一款方便实用的自动点击工具&#xff0c;可以帮助Mac用户在使用电脑时轻松、快速地进行鼠标操作。它可以模拟人类手指点击的动作&#xff0c;让您的鼠标点击变得更加快捷高效&#xff0c;大大提升了工作和游戏的效率。 RapidClick for Macv1.5.1激活版下载…

在PostgreSQL中如何有效地批量导入大量数据,并确保数据加载过程中的性能和稳定性?

文章目录 解决方案1. 使用COPY命令2. 调整配置参数3. 禁用索引和约束4. 使用事务5. 并发导入 总结 在PostgreSQL中&#xff0c;批量导入大量数据是一个常见的需求&#xff0c;特别是在数据迁移、数据仓库填充或大数据分析等场景中。为了确保数据加载过程中的性能和稳定性&#…

商用无线通信:信道带宽

GSM: 200 kHzWCDMA: 5 MHzcdma2000 1X: 1.25 MHzTD-SCDMA: 1.6 MHzLTE: 1.4 MHz /3 MHz /5 MHz /10 MHz / 15 MHz /20 MHz5G&#xff08;Rangel 频段&#xff09;&#xff1a;5 MHz/15 MHz/ 20 MHz/30 MHz/40 MHz/50 MHz/60 MHz/ 70 MHz/80 MHz/90 MHz/100 MHz5G (Range2 Hif):…

代码随想录训练营24day-贪心算法2

一、122 买卖股票最佳时机 题目介绍限制条件&#xff0c;必须卖了再买&#xff0c;而且当前交易一只股票。一开始想法是去遍历&#xff0c;找到每个区间段间的差值&#xff0c;然后再相加。看了解答&#xff0c;其实每一天的利润&#xff0c;都是可以用差值表示出来&#xff0…