日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

matlab中图像太大,图像处理:算法在MATLAB中耗时太长

發布時間:2025/4/5 循环神经网络 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 matlab中图像太大,图像处理:算法在MATLAB中耗时太长 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

您可以使用im2col *將圖片轉換為列格式,以便每個塊形成[64 * 4096]矩陣的列。然后對每列應用轉換,并使用bsxfun來向量化錯誤計算。

DomainImage=rand(512);

RangeImage=rand(512);

DomainImage_col = im2col(DomainImage,[8 8],'distinct');

R = im2col(RangeImage,[8 8],'distinct');

[x y]=ndgrid(1:8);

function [x_dash, y_dash] = ApplyTransformation(x,y)

x_dash = x;

y_dash = y;

end

[x_dash, y_dash] = ApplyTransformation(x,y);

idx = sub2ind([8 8],x_dash, y_dash);

D_trans = DomainImage_col(idx,:); %transformation is reduced to matrix indexing

Error = 0;

for mn = 1:64

Error = Error + bsxfun(@minus,R(mn,:),D_trans(mn,:).').^2;

end

[minerror ,min_ij]= min(Error,[],2); % linear index of minimum of each block;

[min_i min_j]=ind2sub([64 64],min_ij); % convert linear index to subscript

解釋:

我們的目標是盡可能減少循環次數。為此,我們應該避免矩陣索引,而應該使用矢量化。嵌套循環應轉換為一個循環。作為第一步,我們可以創建一個更優化的循環:

min_ij = zeros(4096,1);

for kl = 1:4096 %%% => 1:size(D_trans,2)

minerror = 9999;

min_ij(kl) = 0;

for ij = 1:4096 %%% => 1:size(R,2)

Error = 0;

for mn = 1:64

Error = Error + (R(mn,kl) - D_trans(mn,ij)).^2;

end

if(Error < minerror)

minerror = Error;

min_ij(kl) = ij;

end

end

end

我們可以重新安排循環,我們可以將最內部的循環作為外部循環,并將最小值的計算與錯誤的計算分開。

% Computation of the error

Error = zeros(4096,4096);

for mn = 1:64

for kl = 1:4096

for ij = 1:4096

Error(kl,ij) = Error(kl,ij) + (R(mn,kl) - D_trans(mn,ij)).^2;

end

end

end

% Computation of the min

min_ij = zeros(4096,1);

for kl = 1:4096

minerror = 9999;

min_ij(kl) = 0;

for ij = 1:4096

if(Error(kl,ij) < minerror)

minerror = Error(kl,ij);

min_ij(kl) = ij;

end

end

end

現在代碼的排列方式可以最好地進行矢量化:

Error = 0;

for mn = 1:64

Error = Error + bsxfun(@minus,R(mn,:),D_trans(mn,:).').^2;

end

[minerror ,min_ij] = min(Error, [], 2);

[min_i ,min_j] = ind2sub([64 64], min_ij);

*如果您沒有圖像處理工具箱,可以找到更有效的im2col實施{。{3}}。

*整個計算只需不到一分鐘。

總結

以上是生活随笔為你收集整理的matlab中图像太大,图像处理:算法在MATLAB中耗时太长的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。