久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 雙線性插值法縮放矩陣或圖像MATLAB代碼 [打印本頁]

作者: exp(jpai)+1=0    時間: 2023-3-5 15:40
標題: 雙線性插值法縮放矩陣或圖像MATLAB代碼


  1. %----------------------雙線性插值法縮放矩陣或圖像---------------------------
  2. % Input:
  3. %       I:圖像文件名或矩陣(整數值(0~255))
  4. %       zmf:縮放因子,即縮放的倍數
  5. % Output:
  6. %       縮放后的圖像矩陣 ZI
  7. % Usage:
  8. %       ZI = SSELMHSIC('ImageFileName',zmf)
  9. %       對圖像I進行zmf倍的縮放并顯示
  10. %    Or:
  11. %       ZI = SSELMHSIC(I,zmf)
  12. %       對矩陣I進行zmf倍的縮放并顯示
  13. %-------------------------------------------------------------------
  14. %%%%    Authors:   Zhi Liu
  15. %%%%    XiDian University Student
  16. %%%%    DATE:      16-12-2013
  17. % 確實能實現把圖片放大,但是不失真太多,比把圖片直接放大分辨率更高

  18. clc;clear all;close all;

  19. %% Step1 對數據進行預處理

  20. zmf = 2;   % 縮放因子,即縮放的倍數
  21. [I,M] = imread("78.png");

  22. if zmf <= 0
  23.     error('縮放倍數 zmf的值應該大于0!');
  24. end

  25. %% Step2 通過原始圖像和縮放因子得到新圖像的大小,并創建新圖像。
  26. [IH,IW,ID] = size(I);
  27. ZIH = round(IH*zmf); % 計算縮放后的圖像高度,最近取整
  28. ZIW = round(IW*zmf); % 計算縮放后的圖像寬度,最近取整
  29. ZI = zeros(ZIH,ZIW,ID); % 創建新圖像

  30. %% Step3 擴展矩陣I邊緣
  31. IT = zeros(IH+2,IW+2,ID);  % 小圖像
  32. IT(2:IH+1,2:IW+1,:) = I;  % 把原圖像賦值過去
  33. IT(1,2:IW+1,:)=I(1,:,:);
  34. IT(IH+2,2:IW+1,:)=I(IH,:,:);

  35. IT(2:IH+1,1,:)=I(:,1,:);
  36. IT(2:IH+1,IW+2,:)=I(:,IW,:);

  37. IT(1,1,:) = I(1,1,:);
  38. IT(1,IW+2,:) = I(1,IW,:);

  39. IT(IH+2,1,:) = I(IH,1,:);
  40. IT(IH+2,IW+2,:) = I(IH,IW,:);

  41. %% Step4 由新圖像的某個像素(zi,zj)映射到原始圖像(ii,jj)處,并插值。

  42. for zj = 1:ZIW         % 對圖像進行按列逐元素掃描
  43.     for zi = 1:ZIH
  44.         ii = (zi-1)/zmf; jj = (zj-1)/zmf;
  45.         i = floor(ii); j = floor(jj); % 向下取整
  46.         u = ii - i; v = jj - j;
  47.         i = i + 1; j = j + 1;
  48.         ZI(zi,zj,:) = (1-u)*(1-v)*IT(i,j,:) +(1-u)*v*IT(i,j+1,:)...
  49.         + u*(1-v)*IT(i+1,j,:) +u*v*IT(i+1,j+1,:);
  50.     end
  51. end

  52. ZI = uint8(ZI);

  53. %% 以圖像的形式顯示同現矩陣P
  54. figure
  55. imshow(I,M);
  56. axis on
  57. title(['原圖像(大小: ',num2str(IH),'*',num2str(IW),'*',num2str(ID),')']);

  58. figure
  59. imshow(ZI,M);
  60. axis on
  61. title(['縮放后的圖像(大小: ',num2str(ZIH),'*',num2str(ZIW),'*',num2str(ID)',')']);

  62. % -----------------

  63. % function R = bicubic(src, scale)
  64. %% 雙三次插值
  65. src = imread("78.png");
  66. src = double(src) / 255;

  67. scale = 2;

  68. % 判斷是灰度圖還是RGB圖像
  69. if ismatrix(src)
  70.     R = zeros(floor(size(src) * scale));
  71. else
  72.     R = zeros([floor(size(src, 1, 2) * scale), 3]);
  73. end
  74. [dstM, dstN, ~] = size(R);
  75. % 擴展原圖像
  76. misrc = zeros([size(src, 1, 2) + 2 * floor(scale), size(R, 3)]);
  77. for i = 1 : size(R, 3)
  78.     tmp = padarray(src(:, :, i), [floor(scale), floor(scale)], 'symmetric');
  79.     misrc(:, :, i) = tmp;
  80. end

  81. %逐像素點賦值
  82. for dstX = 1 : dstM
  83.     for dstY = 1 : dstN
  84.         srcX = floor((dstX + 0.5) / scale - 0.5);
  85.         srcY = floor((dstY + 0.5) / scale - 0.5);
  86.         u = ((dstX + 0.5) / scale - 0.5) - srcX;
  87.         v = ((dstY + 0.5) / scale - 0.5) - srcY;
  88.         X1 = zeros(4, 4);  
  89.         X2 = zeros(4, 4);  
  90.         W1 = ones(4, 4);
  91.         W2 = ones(4, 4);   
  92.         % Bicubic基函數
  93.         for i = 1 : 4
  94.             for j = 1 : 4
  95.                 X1(i, j) = abs(u - i + 2);
  96.                 X2(i, j) = abs(v - j + 2);
  97.                 if X1(i, j) <= 1
  98.                     W1(i, j) = 1.5 * (X1(i, j)) ^ 3 - 2.5 * (X1(i, j)) ^ 2 + 1;
  99.                 else
  100.                     if X1(i, j) < 2
  101.                         W1(i, j) = (-0.5) * (X1(i, j)) ^ 3 + 2.5 * (X1(i, j)) ^ 2 - 4 * X1(i, j) + 2;
  102.                     else
  103.                         W1(i, j) = 0;
  104.                     end
  105.                 end
  106.                 if X2(i, j) <= 1
  107.                     W2(i, j) = 1.5 * (X2(i, j)) ^ 3 - 2.5 * (X2(i, j)) ^ 2 + 1;
  108.                 else
  109.                     if  X2(i, j) < 2
  110.                         W2(i, j) = (-0.5) * (X2(i, j)) ^ 3 + 2.5 * (X2(i, j)) ^ 2 - 4 * X2(i, j) + 2;
  111.                     else
  112.                         W2(i, j) = 0;
  113.                     end
  114.                 end
  115.             end
  116.         end
  117.         W = W1 .* W2;
  118.         Z = ones(4, 4);  %16個源像素點矩陣
  119.         O = ones(4, 4);  %16個加權后的源像素點矩陣
  120.         for dstC = 1 : size(R, 3)
  121.             for i = 1 : 4
  122.                 for j = 1 : 4
  123.                     Z(i, j) = misrc(srcX - 2 + i + round(scale), srcY - 2 + j + round(scale), dstC);
  124.                     O(i, j) = W(i, j) .* Z(i,j);
  125.                 end
  126.             end
  127.             O1 = sum(sum(O));
  128.             R(dstX, dstY, dstC) = O1;
  129.         end
  130.     end
  131. end

  132. figure,imshow(R);
復制代碼





歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 中文字幕亚洲精品 | 久草视频在线播放 | 国产免费黄色 | 精品在线观看视频 | 久插视频 | 婷婷午夜天 | 成人在线国产 | 免费黄色一级 | 黄色三级小说 | 色综合五月 | 九九综合网 | 日本在线看 | 综合伊人久久 | 国产小视频在线播放 | 国产欧美精品一区二区三区 | 狠狠操综合| 日本成人黄色 | 亚洲精品欧美 | 三级黄色片免费看 | 看黄色大片 | a级片网站 | 亚洲精品中文字幕乱码三区91 | 国产精品久久久久久久久久久久午夜片 | 国内精品一区二区三区 | 夜晚福利视频 | av一区二区三区 | 91色视频 | 黄色一级视频免费看 | 亚洲毛片在线 | 精品一区二区三区在线观看 | 香蕉视频免费看 | 欧美一区二区三区在线 | 3d动漫精品h区xxxxx区 | 人人看人人草 | 国产成人免费在线 | 国产一区久久 | 18视频在线观看男男 | 欧美日韩中文 | 亚洲91av | 国产黄色在线 | 污视频网站在线观看 |