当前位置: 首页 > news >正文

生鲜市场型网站开发北京做网站多少钱合理

生鲜市场型网站开发,北京做网站多少钱合理,wordpress ashley,沈阳做招聘网站1. 图像缩放 1.1 简介 图像缩放是指通过增加或减少像素来改变图像尺寸的过程#xff0c;是图像处理中常见的操作。图像缩放会涉及效率和图像质量之间的权衡。 图像放大#xff08;也称为上采样或插值#xff09;的主要目的是放大原图像#xff0c;以便在更高分辨率的显示设… 1. 图像缩放 1.1 简介 图像缩放是指通过增加或减少像素来改变图像尺寸的过程是图像处理中常见的操作。图像缩放会涉及效率和图像质量之间的权衡。 图像放大也称为上采样或插值的主要目的是放大原图像以便在更高分辨率的显示设备上显示。但是放大图像并不能带来更多信息因此图像质量会不可避免地受到影响。 图像缩小也称为下采样的主要目的是减小图像尺寸以便更有效地存储或传输。缩小图像可以保留更多信息但图像细节会丢失。 1.2 图像缩放方法分类 空间域方法直接在图像像素空间进行操作。常见的空间域缩放方法包括 最近邻插值简单快速但图像质量较差。双线性插值图像质量比最近邻插值好但计算量更大。立方插值图像质量比双线性插值好但计算量更大。 常见空间域缩放方法的比较 方法优点缺点最近邻插值简单快速容易产生锯齿双线性插值平滑图像可能导致细节模糊立方插值效果更好计算量较大 频域方法将图像转换为频域然后在频域进行操作。常见的频域缩放方法包括 傅里叶插值将图像转换为傅里叶频谱然后根据缩放比例调整频谱大小再将逆傅里叶变换回图像空间。傅里叶插值可以保持图像边缘锐度。图像质量较高但计算量较大。Lanczos 插值一种改进的傅里叶插值算法通过使用低通滤波器来消除频谱中的混叠现象平衡了速度和质量是常用频域算法之一。 2.  插值算法 图像插值算法是指在已知像素值的基础上估计未知像素值的数学方法。OpenCV 提供了多种插值算法用于图像缩放、旋转、仿射变换等操作。 在数学的数值分析领域中内插或称插值英语Interpolation是一种通过已知的、离散的数据点在范围内推求新数据点的过程或方法。 2.1 最近邻插值(Nearest Neighbor Interpolation) 最近邻插值通过找到目标像素在原图像中最近的像素值来赋值给目标像素。具体来说根据原图像和目标图像的尺寸计算缩放的比例然后根据缩放比例计算目标像素所依据的原像素并将该值赋给目标像素。 其中 、 表示原图像中的坐标 、 表示目标图像中的坐标scale 表示放缩倍数。 最近邻插值的优点: 算法简单计算量小速度快。不会产生新的像素值保持原始图像的灰度值。 最近邻插值的缺点: 容易产生锯齿现象图像质量较低。 最近邻插值.png 下面的代码展示了如何实现最近邻插值算法 #include opencv2/highgui/highgui.hpp #include opencv2/imgproc/imgproc.hppusing namespace std; using namespace cv;//最近邻插值算法 void nearestNeighbor(cv::Mat src, cv::Mat dst, float sx, float sy) {// 由 scale 计算输出图像的尺寸四舍五入int dst_cols  round(src.cols * sx);int dst_rows  round(src.rows * sy);dst  cv::Mat(dst_rows,dst_cols,src.type());for (int i  0; i  dst.rows; i){for (int j  0; j  dst.cols; j){if (src.channels()  1) {// 插值计算输出图像的像素点由原图像对应的最近的像素点得到四舍五入int i_index  round(i / sy);int j_index  round(j / sx);if (i_index  src.rows - 1) i_index  src.rows - 1;//防止越界if (j_index  src.cols - 1) j_index  src.cols - 1;//防止越界dst.atuchar(i, j)  src.atuchar(i_index, j_index);} else {// 插值计算输出图像的像素点由原图像对应的最近的像素点得到四舍五入int i_index  round(i / sy);int j_index  round(j / sx);if (i_index  src.rows - 1) i_index  src.rows - 1;//防止越界if (j_index  src.cols - 1) j_index  src.cols - 1;//防止越界dst.atcv::Vec3b(i, j)[0]  src.atcv::Vec3b(i_index, j_index)[0];dst.atcv::Vec3b(i, j)[1]  src.atcv::Vec3b(i_index, j_index)[1];dst.atcv::Vec3b(i, j)[2]  src.atcv::Vec3b(i_index, j_index)[2];}}} }int main() {Mat src  imread(.../grass.jpg);imshow(src, src);Mat dst;nearestNeighbor(src, dst,1.5, 1.5);imshow(dst, dst);waitKey(0);return 0; } 原图和最近邻插值实现的缩放.png 下面的代码通过 Mat 的 forEach() 结合 C11 lambda 表达式实现对 Mat 对象快速像素遍历进而重构了最近邻插值算法。 typedef cv::Point3_uint8_t Pixel;//最近邻插值算法 void nearestNeighbor(cv::Mat src, cv::Mat dst, float sx, float sy) {// 由 scale 计算输出图像的尺寸四舍五入int dst_cols  round(src.cols * sx);int dst_rows  round(src.rows * sy);dst  cv::Mat(dst_rows,dst_cols,src.type());dst.forEachPixel([](Pixel p, const int * position) - void {int row  position[0];int col  position[1];if (src.channels()  1) {int i_index  round(row / sy);int j_index  round(col / sx);dst.atuchar(row, col)  src.atuchar(i_index, j_index);} else {int i_index  round(row/ sy);int j_index  round(col / sx);dst.atcv::Vec3b(row, col)[0]  src.atcv::Vec3b(i_index, j_index)[0];dst.atcv::Vec3b(row, col)[1]  src.atcv::Vec3b(i_index, j_index)[1];dst.atcv::Vec3b(row, col)[2]  src.atcv::Vec3b(i_index, j_index)[2];}}); } 2.2 双线性插值(Bilinear Interpolation) 先介绍一下线性插值线性插值是一种估计两个已知数据点之间的值的方法。 线性插值.png 假设我们已知坐标 () 与 ()要得到 [] 区间内某一位置 x 在直线上的值。由上图可得 由于 x 已知则 y 所以这是在 x 方向上进行了一次线性插值。 双线性插值是对 x 方向和 y 方向分别进行插值它根据原始图像中四个相邻像素的值来估计新位置处像素的值。它是一维线性插值的扩展。 双线性插值.png 在上图中假设已知、、、四个点我们要估计由这四个点组成的矩形内的任意点(x,y)处像素值 f(x,y) 。 对沿 y 轴的两对点 、在 x 方向进行线性插值 对沿 y 轴的两对点 、在 x 方向进行线性插值 对沿 x 轴的两对点 、在 y 方向进行线性插值 此时一共执行了三次线性插值双线性插值只是对 x、y 方向进行插值而不是进行两次插值。 双线性插值用于根据原始图像中的已知值来估计调整大小的图像中像素的强度或颜色值。与最近邻插值相比这种方法可以产生更平滑的结果后者可能会导致可见的伪影或锯齿状边缘。 下面的代码展示了如何实现双线性插值算法。 #include opencv2/opencv.hppusing namespace cv; using namespace std;typedef cv::Point3_uint8_t Pixel;// 双线性插值算法 void bilinearInterpolation(Mat src, Mat dst, double sx, double sy) {int dst_rows  static_castint(src.rows * sy);int dst_cols  static_castint(src.cols * sx);dst  Mat::zeros(cv::Size(dst_cols, dst_rows), src.type());dst.forEachPixel([](Pixel p, const int * position) - void {int row  position[0];int col  position[1];// (col,row)为目标图像坐标// (before_x,before_y)原图坐标double before_x  double(col  0.5) / sx - 0.5f;double before_y  double(row  0.5) / sy - 0.5;// 原图像坐标四个相邻点// 获得变换前最近的四个顶点,取整int top_y  static_castint(before_y);int bottom_y  top_y  1;int left_x  static_castint(before_x);int right_x  left_x  1;//计算变换前坐标的小数部分double u  before_x - left_x;double v  before_y - top_y;// 如果计算的原始图像的像素大于真实原始图像尺寸if ((top_y  src.rows - 1)  (left_x  src.cols - 1)) {//右下角for (size_t k  0; k  src.channels(); k) {dst.atVec3b(row, col)[k]  (1\. - u) * (1\. - v) * src.atVec3b(top_y, left_x)[k];}} else if (top_y  src.rows - 1) { //最后一行for (size_t k  0; k  src.channels(); k) {dst.atVec3b(row, col)[k] (1\. - u) * (1\. - v) * src.atVec3b(top_y, left_x)[k] (1\. - v) * u * src.atVec3b(top_y, right_x)[k];}} else if (left_x  src.cols - 1) {//最后一列for (size_t k  0; k  src.channels(); k) {dst.atVec3b(row, col)[k] (1\. - u) * (1\. - v) * src.atVec3b(top_y, left_x)[k] (v) * (1\. - u) * src.atVec3b(bottom_y, left_x)[k];}} else {for (size_t k  0; k  src.channels(); k) {dst.atVec3b(row, col)[k] (1\. - u) * (1\. - v) * src.atVec3b(top_y, left_x)[k] (1\. - v) * (u) * src.atVec3b(top_y, right_x)[k] (v) * (1\. - u) * src.atVec3b(bottom_y, left_x)[k] (u) * (v) * src.atVec3b(bottom_y, right_x)[k];}}}); }int main() {Mat src  imread(.../grass.jpg);imshow(src, src);double sx  1.5;double sy  1.5;Mat dst;bilinearInterpolation(src,dst, sx, sy);imshow(dst, dst);waitKey(0);return 0; } 原图和双线性插值实现的缩放.png 3.  总结 图像缩放是图像处理中一项重要的技术具有广泛的应用场景。 本文介绍了两种比较简单的插值算法最近邻插值、双线性插值。最近邻插值适合于需要保持图像原始灰度值或边缘清晰度的场景。双线性插值适合于需要平滑图像的场景。如果需要更高的图像质量可以考虑使用其他插值算法例如立方插值或 Lanczos 插值后续的文章也会介绍它们。
http://www.zqtcl.cn/news/772064/

相关文章:

  • 鹤壁做网站优化建设银行理财产品网站
  • 电子商务类网站模板自学网站建设基本流程
  • 无锡网站制作的公司上海企业服务公司
  • 做h5小程序的网站搜索引擎营销案例
  • 订餐网站开发方案查询网站是否正规
  • 建站论坛图片生成器免费
  • 怎么做自己的店铺网站博物馆门户网站建设优势
  • 专业旅游培训网站建设应用之星 wordpress
  • 青海媒体网站建设公司深圳网站建设推广优化公司
  • 网站开发 价格跨境支付互联互通
  • 织梦 修改网站logo营销型网站设计的内容
  • 电商网站运营策划做网站CentOS还是win好
  • 小型企业网站模板企业网站seo点击软件
  • 提供邯郸企业建网站网站图片上怎么做弹幕效果
  • 滨州做网站的wordpress如何添加商桥
  • 网站登录密码忘记网站开发营业执照申请
  • 电商网站设计思路音乐推广平台有哪些
  • 网站建设傲鸿网站链轮内有死链
  • 哪些网站可以做微商品牌宣传网站怎么不花钱做排名 知乎
  • 上传了网站源码怎么做wordpress加百度广告代码出问题
  • 哪些网站做推广vi设计说明模板
  • 杭州市建设工程造价管理协会网站攀枝花建设工程质量监督站投诉网站
  • 做网站推广送什么深圳的网站建设公司流程
  • 中国网站开发的前景制作公司主页网站
  • 在线画流程图的网站购物网站的设计与实现论文
  • 淘宝客cms网站建设K12网站怎么建设
  • 专业门户网站开发浙江省湖州艺术与设计学校官网
  • 企业网站搭建价格搭建平台的另一种说法
  • 网站开发框架桂林人论坛风姿摄影
  • 吉林省建设安全信息网站网站服务器和空间有什么区别