图像顺时针步进1个像素点的算法
来源:互联网 发布:架子鼓训练软件安卓版 编辑:程序博客网 时间:2024/06/05 07:28
矩阵步进1的算法
public void Rotate(int[,] matrix) { int n = matrix.GetUpperBound(0) + 1; int loop = n >> 1; for (int i = 0; i < loop; i++) { int each = n - 2 * i - 1; for (int j = 0; j < each * 4; j++) { int tmp; if (j / each == 0) {//top tmp = matrix[i, i + j % each + 1]; matrix[i, i + j % each + 1] = matrix[i, i]; } else if (j / each == 1) {//right tmp = matrix[i + j % each + 1, n - i - 1]; matrix[i + j % each + 1, n - i - 1] = matrix[i, i]; } else if (j / each == 2) {//bottom tmp = matrix[n - i - 1, n - j % each - 2]; matrix[n - i - 1, n - j % each - 2] = matrix[i, i]; } else {//left tmp = matrix[n - j % each - 2, i]; matrix[n - j % each - 2, i] = matrix[i, i]; } matrix[i, i] = tmp; } } }
来看如何将图像顺时针旋转90度!
原题
You are given an n x n 2D matrix representing an image.
Rotate the image by 90 degrees (clockwise).
Follow up:
Could you do this in-place?
代码实现
算法思想:
时间复杂度O(n^2),空间复杂度O(1)
public class Solution { //This is in-place algorithm by setting a cache cell // first dividing layers(n>>1) // second each layer element moves forward each(n-2*i-1) steps public void Rotate(int[,] matrix) { int n = matrix.GetUpperBound(0) + 1; int loop = n >> 1; for (int i = 0; i < loop; i++){ int each = n - 2 * i - 1; for (int k = 0; k < each; k++) { for (int j = k + each; j < each * 4; j += each){ int cache; if (j / each == 0) {//top cache = matrix[i, i + j % each]; matrix[i, i + j % each] = matrix[i, i + k]; } else if (j / each == 1) {//right cache = matrix[i + j % each, n - i - 1]; matrix[i + j % each, n - i - 1] = matrix[i, i + k]; } else if (j / each == 2) {//bottom cache = matrix[n - i - 1, n - j % each - i - 1]; matrix[n - i - 1, n - j % each - i - 1] = matrix[i, i + k]; } else {//left cache = matrix[n - j % each - i - 1, i]; matrix[n - j % each - i - 1, i] = matrix[i, i + k]; } //matrix[i,i+k]作为缓存区 matrix[i, i + k] = cache; } } } } }
阅读全文
2 1
- 图像顺时针步进1个像素点的算法
- 图像的像素点操作
- 图像RGB个通道像素点统计
- 遍历图像像素点的方法
- 获取图像像素点的概率分布图
- 根据顺序三点,确定是否是顺时针的算法
- 有一副由NxN矩阵表示的图像,这里每个像素用一个int表示,请编写一个算法,在不占用额外内存空间的情况下(即不使用缓存矩阵),将图像顺时针旋转90度。
- 像素画点算法
- OpenCV 访问图像像素点
- 图像处理-像素点分析
- 图像的像素点操作【OpenCV学习笔记3】
- 读取图像中任意点的像素值
- ios--提取图像某个点的像素值
- iOS 开发中 提取图像某个点的像素值
- 【OpenCV】OpenCV中获取图像的像素点并处理
- opencv1.0对图像像素点的操作
- OpenCV2 访问各个像素点的方法(图像遍历)
- 图像指定坐标点的各通道像素值提取
- jQuery中的$(this)的使用
- 杭电2571-命运 动态规划
- data-toggle与data-target的作用
- servlet/filter/listener/interceptor区别与联系
- Linux学习
- 图像顺时针步进1个像素点的算法
- java中json的使用
- spring4整合hibernate4的坑
- 【老鸟分享】Linux命令行终端提示符多种实用技巧!
- memcached 常用命令及使用说明
- SpringMVC+JXLS让excel导出更便捷
- linux中chmod与chown两个命令详解
- 数据库中的问题
- 使用list()函数来遍历数组并取值